SQL 按日期分组并求和另一个列(Microsoft SQL Server)



>我有一个数据表,我想按不同日期分组。但是在本专栏中,我还有小时、分钟和秒...... 我确切地想做的是按日期分组并对另一列求和

例如

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 执行此操作?

我正在使用Transact-SQL 和 SQLServer Management Studio Microsoft。

这就是我正在尝试的:

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

你的代码看起来像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而不是字符串。 我不建议混合使用字符串和日期函数,除非您要将日期/时间转换为具有特定格式的字符串。

另一种可能使其更整洁并且我还发现对计算/串联列的良好做法的选择是一种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使事情更容易阅读

最新更新