【问题标题】:How to select multiple columns, sum one column and group by multiple columns如何选择多列,对一列求和并按多列分组
【发布时间】:2021-10-16 21:53:07
【问题描述】:

我有一个名为example 的表,其中包含user_iddate_startactivity

我需要选择user_iddate_startcolumns 并计算唯一的user_id,然后按user_iddate_start 分组。

表格数据:

  ----------------------------------
 | user_id | date_start | activity  |
 |---------|------------|-----------|
 |  1      |2021-04-01  | CATIA     |
 |  1      |2021-04-05  | CATIA     |
 |  1      |2021-04-02  | CATIA     |
 |  1      |2021-05-01  | CATIA     |
 |  1      |2021-05-02  | CATIA     |
 |  3      |2021-05-02  | CATIA     |
 |  3      |2021-05-03  | CATIA     |
 |  4      |2021-05-05  | CATIA     |
  ----------------------------------

这个查询:

SELECT FORMAT(d.date_start, 'yyyy-MM'), d.user_id
from (select d.user_id,  date_start,
         count(*) over (partition by user_id) as cnt,
         row_number() over (partition by FORMAT(date_start, 'yyyy-MM') order by FORMAT(date_start, 'yyyy-MM') desc) as seqnum
  from planner d
 ) d
where seqnum = 1;

我需要这样显示我的代码:

  ---------------------
 | date_start | total  |
 |------------|--------|
 | 2021-04    | 1      |
 | 2021-05    | 3      |
  ---------------------

【问题讨论】:

  • 您想要的结果与您的查询尝试执行的内容不一致,您想要计算每个唯一日期,但您的查询没有 total 列并且有 user_id 不在您想要的结果中?
  • 我编辑我的问题。

标签: sql sql-server group-by count


【解决方案1】:

你在找这个吗? :

select FORMAT(d.date_start, 'yyyy-MM') date_start
     , count(distinct user_id) total
from planner d
group by FORMAT(date_start, 'yyyy-MM')

【讨论】:

  • user_id 计数在特定年份和月份必须是唯一的
猜你喜欢
  • 1970-01-01
  • 2012-01-03
  • 1970-01-01
  • 2014-10-20
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多