我有一个包含所有创建日期的记录的表。我想选择2014年1月创建的所有记录,并计算每天创建的记录数。我已经选择了当月创建的所有记录,但我不确定如何继续获取该月所有日期的输出以及创建了多少条记录的数量。
SELECT TYPE
,PART_ID
,DESIRED_QTY
,RECEIVED_QTY
,CREATE_DATE
FROM WORK_ORDER
WHERE DATEPART(year,CREATE_DATE) = 2014 and DATEPART(month,CREATE_DATE) = 01
ORDER BY CREATE_DATE ASC
我在该声明中选择的信息并不重要,它只是在那个查询中,所以我选择了一些东西。
答案 0 :(得分:2)
SELECT DATEPART(day,CREATE_DATE), count(*)
FROM WORK_ORDER
WHERE DATEPART(year,CREATE_DATE) = 2014 and DATEPART(month,CREATE_DATE) = 01
group by DATEPART(day,CREATE_DATE)
ORDER BY CREATE_DATE ASC
答案 1 :(得分:1)
如果你需要的只是白天计数,我建议:
SELECT COUNT(*)
FROM WORK_ORDER
WHERE DATEPART(year,CREATE_DATE) = 2014 and DATEPART(month,CREATE_DATE) = 01
GROUP BY DATEPART(DAY, CREATE_DATE)
答案 2 :(得分:1)
SELECT
DATE(CREATE_DATE) as day,
COUNT(*) as count
FROM WORK_ORDER
WHERE DATEPART(year,CREATE_DATE) = 2014 and DATEPART(month,CREATE_DATE) = 01
GROUP BY DATE(CREATE_DATE)
答案 3 :(得分:1)
这是你在找什么?它是一个进行计数的聚合查询:
SELECT CAST(CREATE_DATE as Date) as date,
COUNT(*)
FROM WORK_ORDER
WHERE DATEPART(year, CREATE_DATE) = 2014 and DATEPART(month, CREATE_DATE) = 01
GROUP BY CAST(CREATE_DATE as Date)
ORDER BY CAST(CREATE_DATE as Date) ;
只有CAST()
可以包含时间组件时才需要CREATE_DATE
。此查询使用CAST()
的原因是相同的结构将在多个月内起作用。
我想补充一点,最好像这样编写查询:
SELECT CAST(CREATE_DATE as Date) as date, COUNT(*)
FROM WORK_ORDER
WHERE CREATE_DATE >= '2014-01-01' and CREATE_DATE < '2014-02-01'
GROUP BY CAST(CREATE_DATE as Date)
ORDER BY CAST(CREATE_DATE as Date) ;
这里的区别是WHERE
子句。该公式可以使用CREATE_DATE
上的索引。您的公式具有围绕参数的函数,因此它不会使用索引。
答案 4 :(得分:1)
SELECT DATEPART(year,CREATE_DATE),
DATEPART(month,CREATE_DATE),
DATEPART(day,CREATE_DATE),
count(*)
FROM WORK_ORDER
WHERE DATEPART(year,CREATE_DATE) = 2014
and DATEPART(month,CREATE_DATE) = 01
group by DATEPART(year,CREATE_DATE),
DATEPART(month,CREATE_DATE),
DATEPART(day,CREATE_DATE)
ORDER BY CREATE_DATE ASC