获取具有相同创建日期的记录数
Get a count of a number of records with same create date
我有一个 table 包含所有带有创建日期的记录。我想 Select 2014 年 1 月创建的所有记录,并统计每天创建的记录数。我已经 Select 查看了那个月创建的所有记录,但我不确定如何继续获取该月所有天数的输出以及创建的记录数。
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
我在该语句中选择的信息并不重要,它就在该查询中,所以我选择了一些内容。
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
如果你只需要按天计算,我建议:
SELECT COUNT(*)
FROM WORK_ORDER
WHERE DATEPART(year,CREATE_DATE) = 2014 and DATEPART(month,CREATE_DATE) = 01
GROUP BY DATEPART(DAY, CREATE_DATE)
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)
这是您要找的吗?这是一个进行计数的聚合查询:
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) ;
仅当 CREATE_DATE
可以包含时间组件时才需要 CAST()
。此查询使用 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
上的索引。您的公式具有围绕参数的功能,因此它不会使用索引。
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
我有一个 table 包含所有带有创建日期的记录。我想 Select 2014 年 1 月创建的所有记录,并统计每天创建的记录数。我已经 Select 查看了那个月创建的所有记录,但我不确定如何继续获取该月所有天数的输出以及创建的记录数。
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
我在该语句中选择的信息并不重要,它就在该查询中,所以我选择了一些内容。
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
如果你只需要按天计算,我建议:
SELECT COUNT(*)
FROM WORK_ORDER
WHERE DATEPART(year,CREATE_DATE) = 2014 and DATEPART(month,CREATE_DATE) = 01
GROUP BY DATEPART(DAY, CREATE_DATE)
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)
这是您要找的吗?这是一个进行计数的聚合查询:
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) ;
仅当 CREATE_DATE
可以包含时间组件时才需要 CAST()
。此查询使用 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
上的索引。您的公式具有围绕参数的功能,因此它不会使用索引。
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