我需要一些关于 SQL Sum 函数按日期和组分组的帮助

Posted

技术标签:

【中文标题】我需要一些关于 SQL Sum 函数按日期和组分组的帮助【英文标题】:I need some help here with SQL Sum function group by dates and group 【发布时间】:2011-01-18 21:12:15 【问题描述】:

我有一个名为 Table1 的表

案例编号 |年份 |月 |集团 |参加时间 1 | 2010 | 1 | 16-20 | 8 2 | 2010 | 1 | 16-20 | 1 3 | 2010 | 2 | 0-5 | 2 4 | 2009 | 4 | 0-5 | 2 4 | 2009 | 4 | 16-20 | 5

如果我想得到这样的结果

年份 |月 |GroupHours| GroupHourTotal 2010 | 1 |16-20 | 9 2010 | 3 |2 | 2 2009 | 4 |0-5 | 2 2009 | 4 |16-20 | 5

我试过这个,但当日期不在同一个月时,我得到的结果不正确。 有什么想法吗?

选择年、月、组、参加时间、总和(参加时间)
从表 1
groupby Year,Month,hourattended,sum(hourattended)
按年份顺序排列

【问题讨论】:

【参考方案1】:

不要按时间分组

select Year,Month,group,sum(hourattended) grouphourtotal
from Table1
group by Year,Month,group
order by year desc, month desc

这必须是伪的,否则根据需要引用“组”列名

【讨论】:

【参考方案2】:

仅按结果集中未聚合的列进行分组。由于您正在汇总 HoursAttended,因此它不属于您的 GROUP BY。

select Year,Month,group,hourattended,sum(hourattended) from Table1 groupby Year,Month order by year desc

【讨论】:

【参考方案3】:

select Year,Month,group,sum(hourattended)
from Table1
groupby Year,Monthorder by year desc

【讨论】:

【参考方案4】:

您有一个依赖字段 Group,需要将其拆分为单独的表。一旦你这样做了,它就是小菜一碟:

选择年、月、组标题、 SUM(HoursAttended) 作为 HoursAttended 从案例 C 加入组 G ON C.GroupId = G.Id GROUP BY 年、月、 GroupTitle 按年份顺序排列

将“Group”替换为“GroupId”,使其成为 Groups 表的外键,并且 Bob 是你的叔叔。

【讨论】:

以上是关于我需要一些关于 SQL Sum 函数按日期和组分组的帮助的主要内容,如果未能解决你的问题,请参考以下文章

SQL 按顺序分组和组的顺序 ID

sql 分组 求累计值

按连续日期分组,忽略 SQL 中的周末

帮助将 SQL 语句转换为 LINQ Lambda(在 group by 和 sum 方面需要帮助)

按日期对 MySQL 查询结果进行分组,每个组都有标题和自己的 div

如何选择 n 列和一个 SUM,同时仅按一些非聚合列分组?