Sql 按周、日、月分组
我想按周、日和月对数据进行分组。假设我要查找(一月所有星期日的卷数总和)+(二月所有星期日的卷数总和)+。。。我所做的就像Sql 按周、日、月分组,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我想按周、日和月对数据进行分组。假设我要查找(一月所有星期日的卷数总和)+(二月所有星期日的卷数总和)+。。。我所做的就像 select CONVERT(VARCHAR(10),date,111), DATENAME(weekday,date) as Weekday, DATEPART(month,date) as Month, DATEPART(year,date) as year, sum(volume) f
select CONVERT(VARCHAR(10),date,111),
DATENAME(weekday,date) as Weekday,
DATEPART(month,date) as Month,
DATEPART(year,date) as year,
sum(volume)
from traffic_data_replica
group by CONVERT(VARCHAR(10),date,111),
DATENAME(weekday,date),
DATEPART(month,date),
DATEPART(year,date)
order by DATEPART(year,date),
CONVERT(VARCHAR(10),date,111),
DATEPART(month,date),
DATENAME(weekday,date) ;
但这并不是我想要的结果:(您将实际日期包含在group by中(
CONVERT(VARCHAR(10),date,111)
),因此日期是聚合级别。请尝试以下操作:
SELECT Year(date),
Month(date),
Datename(weekday, date) AS Weekday,
Sum(volume)
FROM traffic_data_replica
GROUP BY Year(date),
Month(date),
Datename(weekday, date)
ORDER BY Year(date),
Month(date),
Datename(weekday, date);
您可以使用
datepart()
代替year()
和month()
。我只是觉得后者更容易阅读和键入。不,我需要的是一月所有星期日的卷的总和。然后是二月的星期日等等…您上面给出的结果与我得到的结果相同…@bibinmatthew…此查询每个工作日每月应返回一行,以及卷的总和。您的查询返回一行每天的行数,以及当天的总卷数。查询不应返回相同的内容。如果设置SQL FIDLE示例,我们可以比较两个查询的结果集。解释得很好:)谢谢bro@gordon