查询每月获取的记录数

时间:2019-07-15 08:30:46

标签: mysql sql

我正在尝试获取在财政年度的每个月中输入的记录数

例如,我在varchar中声明了一个名为issue的列,因为我获取的数据是特定机器的问题。例如,假设某问题在7月中提出,我将数据输入为“ 7月19-1”,又一次问题在9月中提出,再次回到7月份发生的问题并将数据输入为“ sep19-2'。

因此在后端,它取为jul19-1 sep19-2

我可以写什么查询来统计每个月提出的问题数量

我尝试了以下查询,但是

    SELECT COUNT(month_nc) 
    FROM `ncr` 
    WHERE month_nc='Jul18-1'

在某些月份中只会出现一个问题,因此我可以计算上述查询中给出的月份数

如果我想获取每个月的计数将会是什么查询

id  issue     issue_month 
1    bearing   jul18-1
               sep18-2
2    motor     jul18-2
3    battery   apr18-3

ps:issue_month在varchar(10)中声明

2 个答案:

答案 0 :(得分:1)

这是两种方法。一种使用字符串:

select left(issue_month, 5), count(*)
from t
group by left(issue_month, 5), count(*)

这将无法正确排序值。

您可以将日期转换为正确的日期:

order by str_to_date(concat('01', left(issue_month, 5)), '%d%b%y')

或者,正确表示日期:

select str_to_date(concat('01', left(issue_month, 5)), '%d%b%y') as yyyymm, count(*)
from t
group by yyyymm
order by yyyymm;

答案 1 :(得分:0)

您可以按照以下步骤将issue_month分为“ month_year”和“ issue_count”

您的表

enter image description here

select id, 
issue, 
issue_month, 
REGEXP_SUBSTR(issue_month, '[^-]+', 1) as month_year,
REGEXP_SUBSTR(issue_month, '[^-]+', 1,2 ) as issue_count 
from yourTable;

enter image description here

现在,您可以跨问题或year_months或表中的任何其他字段汇总issue_count。

例如,要获取给定month_year的所有问题的总和

    select 
        month_year, 
        sum(issue_count) issue_count 
        from
    (select 
     id, issue, issue_month, 
     REGEXP_SUBSTR(issue_month, '[^-]+', 1) as month_year,
     REGEXP_SUBSTR(issue_month, '[^-]+', 1,2 ) as issue_count 
     from yourTable) foo
     group by  month_year;

enter image description here