【问题标题】:SUM and Count in one SQL Query在一个 SQL 查询中求和和计数
【发布时间】:2017-10-11 02:26:55
【问题描述】:

我有这种数据

time                                               Members
-------------------------------------------------- -----------
Jun 23 2016                                           1
Jun 23 2016                                           1
Jun 23 2016                                           2
Jun 29 2016                                           6
Jul 11 2016                                           3
Jul 11 2016                                           1
Jul 13 2016                                           1

我使用这个 sql 查询获得了这个数据

SELECT CONVERT (VARCHAR(12), a.registered_time), COUNT(b.member_id) AS Members
FROM b
Inner JOIN a ON b.mirror_id = a.mirror_id 
GROUP BY 
(a.registered_time) order by a.registered_time

如果它们是同一日期,我想获得总数的总和,例如 2016 年 6 月 23 日的日期将有 4 个成员,依此类推。是否可以在 Count() 上有 SUM() 函数?我该怎么做?

【问题讨论】:

  • menberid 本身的计数为您提供该日期的 4,无需再在那里求和,并将注册日期也转换为分组日期

标签: sql sql-server count sum


【解决方案1】:

将值转换为date 并将其包含在selectgroup by 中:

SELECT CONVERT(date, a.registered_time) as dte, COUNT(b.member_id) AS Members
FROM b JOIN
     a
     ON b.mirror_id = a.mirror_id 
GROUP BY CONVERT(date, a.registered_time)
ORDER BY CONVERT(date, a.registered_time);

【讨论】:

  • 返回一个错误,指出 register_time 在 ORDER BY 中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
  • @bleykFaust 。 . .那应该是表达式或dte
  • 我只想得到当时的年份怎么样?
  • @bleykFaust 。 . .您将使用year()datepart()datename()
猜你喜欢
  • 2019-03-04
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
相关资源
最近更新 更多