根据约会和计数对每一行进行分组

时间:2016-11-19 23:21:09

标签: sql count group-by

我已经生成了一个表,但希望按日期计算TAILNO进行分组。但我只能为每个tailno获取每天所有tailno的总下载量。有人可以帮助解决这个问题吗,并且没有办法将列TAILNO放在代码中,代码是:

Select CAST(FlightDate AS DATE) AS DATING, count(*) AS TOTALDOWNLOAD
from [base].[dbo].[FlightOperations]

WHERE FlightDate >= CONVERT(DATE, dateadd(dd,datediff(dd,0, GetDate()- 7), 0),111) 

--- dd means day 

GROUP BY CAST(FlightDate AS DATE)

表是:

    DATING     TAILNO
--------------------------------------
2016-11-11  024
2016-11-14  024
2016-11-14  024
2016-11-14  024
2016-11-15  024
2016-11-15  024
2016-11-16  024
2016-11-16  024
2016-11-16  024
2016-11-16  024
2016-11-16  024
2016-11-16  024
2016-11-17  024
2016-11-17  024
2016-11-17  024
2016-11-17  024
2016-11-11  030
2016-11-12  030
2016-11-12  030
2016-11-12  030
2016-11-12  030
2016-11-13  030
2016-11-13  030
2016-11-15  030
2016-11-15  030
2016-11-15  030
2016-11-15  030
2016-11-15  030
2016-11-16  030
2016-11-16  030
2016-11-16  030
2016-11-16  030
2016-11-16  030
2016-11-17  030
2016-11-17  030
2016-11-18  030
2016-11-11  057
2016-11-11  057
2016-11-11  057
2016-11-14  057
2016-11-14  057
2016-11-14  057
2016-11-15  057
2016-11-15  057
2016-11-15  057
2016-11-16  057
2016-11-16  057
2016-11-16  057
2016-11-17  057
2016-11-17  057
2016-11-17  057
2016-11-11  058
2016-11-11  058
2016-11-14  058
2016-11-14  058
2016-11-14  058
2016-11-15  058
2016-11-15  058
2016-11-17  058
2016-11-17  058
2016-11-11  125
2016-11-11  125
2016-11-11  125
2016-11-12  125
2016-11-13  125
2016-11-14  125
2016-11-14  125
2016-11-14  125
2016-11-15  125
2016-11-15  125
2016-11-15  125
2016-11-16  125
2016-11-17  125
2016-11-17  125
2016-11-14  185
2016-11-14  185
2016-11-15  185
2016-11-15  185
2016-11-15  185
2016-11-15  185
2016-11-16  185
2016-11-16  185
2016-11-16  185
2016-11-17  185
2016-11-17  185
2016-11-17  185
2016-11-17  185
2016-11-11  190
2016-11-13  190
2016-11-13  190
2016-11-13  190
2016-11-14  190
2016-11-14  190
2016-11-14  190
2016-11-14  190
2016-11-15  190
2016-11-15  190
2016-11-15  190
2016-11-16  190
2016-11-16  190
2016-11-17  190
2016-11-17  190
2016-11-17  190
2016-11-18  190
2016-11-11  216
2016-11-11  216
2016-11-14  216
2016-11-14  216
2016-11-14  216
2016-11-14  216
2016-11-15  216
2016-11-15  216
2016-11-15  216
2016-11-16  216
2016-11-17  216
2016-11-17  216
2016-11-11  237
2016-11-11  237
2016-11-11  237
2016-11-14  237
2016-11-15  237
2016-11-15  237
2016-11-15  237
2016-11-16  237
2016-11-16  237
2016-11-16  237
2016-11-17  237
2016-11-17  237
2016-11-18  237
2016-11-11  241
2016-11-11  241
2016-11-14  241
2016-11-14  241
2016-11-14  241
2016-11-15  241
2016-11-15  241
2016-11-15  241
2016-11-15  241
2016-11-15  241
2016-11-17  241
2016-11-17  241
2016-11-17  241
2016-11-17  241
2016-11-18  241
2016-11-18  241
2016-11-18  241
2016-11-11  250
2016-11-11  250
2016-11-12  250
2016-11-14  250
2016-11-14  250
2016-11-14  250
2016-11-15  250
2016-11-15  250
2016-11-15  250
2016-11-16  250
2016-11-16  250
2016-11-16  250
2016-11-16  250
2016-11-17  250



DATING         TOTALDOWNLOAD   TAIL NO
---------------------------------------------
2016-11-11            1             024        
2016-11-14            3             024
2016-11-15            2             024
2016-11-16            6             024
2016-11-17            4             024

2016-11-11            1             030        
2016-11-12            4            030
2016-11-13            2             030
2016-11-15            5             030
2016-11-16            5             030
2016-11-17            2             030
2016-11-18            1             030

1 个答案:

答案 0 :(得分:1)

从这个查询开始:

Select CAST(FlightDate AS DATE) AS DATING,
       TailNo, count(*) AS TOTALDOWNLOAD
from [base].[dbo].[FlightOperations]
where FlightDate >= CONVERT(DATE, GetDate() - 7) 
group by CAST(FlightDate AS DATE), TailNo
order by CAST(FlightDate AS DATE)

每个日期和TailNo每行会有一行。请注意,我还简化了WHERE子句中的日期逻辑。