我正在尝试获取在财政年度的每个月中输入的记录数
例如,我在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)中声明
答案 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”
您的表
select id,
issue,
issue_month,
REGEXP_SUBSTR(issue_month, '[^-]+', 1) as month_year,
REGEXP_SUBSTR(issue_month, '[^-]+', 1,2 ) as issue_count
from yourTable;
现在,您可以跨问题或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;