sql按日期分组并求和另一列(microsoft sql server)

z4iuyo4d  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(497)

我有一个数据表,我想按不同的日期分组。但在这个专栏里,我还有小时,分和秒。。。我要做的就是按日期分组并对另一列求和。
例如:

Date                       DataToSum
2020-05-20 10:29:37.000        5
2020-05-20 11:18:12.010        3
2020-05-20 12:31:56.020        8
2020-05-21 10:19:36.000        4
2020-05-22 09:28:17.000        1

所以结果是这样的:

2020-05-20 -> 16
2020-05-21 -> 4
2020-05-22 -> 1

如何使用sql来实现这一点?
我正在microsoft sql server management studio中使用transact-sql。
这就是我要尝试的:

Select distinct convert(varchar, col_Date, 111), Sum(cats) from table1
Group by col_Date
Order by convert(varchar, col_Date, 103) desc
dy2hfwbg

dy2hfwbg1#

您的代码看起来像sql server。在该数据库中:

select convert(date, col_Date) as dte, Sum(cats)
from table1
group by convert(date, col_Date)
order by convert(date, col_Date) desc;

关键是需要在 group by .
注意:这会将值转换为 date 而不是一根绳子。我不建议混合使用字符串和日期函数,除非您想将日期/时间转换为具有特定格式的字符串。

eyh26e7m

eyh26e7m2#

另一个可能使其更整洁的选项是 Common Table Expression (CTE) ```
With ExampleCTE AS
(
Select convert(date, col_Date) As dte
, cats
From table1
)
Select dte
, SUM(cats) As SumOfCats
From ExampleCTE
Group By dte
Order By dte Desc;

虽然你的例子很容易理解,但你可能会发现在未来更复杂的情况下 `CTE` 使事情更容易阅读

相关问题