Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按周、日、月分组_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

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