首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按日期分组查询

按日期分组查询
EN

Stack Overflow用户
提问于 2020-07-06 16:44:04
回答 3查看 43关注 0票数 1

我正在处理下面的用户表,其中角色=2表示用户是指导员,而角色=3表示用户是学生。

代码语言:javascript
复制
+--------+------+---------------+
|  name  | role | creation_date |
+--------+------+---------------+
| Tom    |    2 | 2020-07-01    |
| Diana  |    3 | 2020-07-01    |
| Rachel |    3 | 2020-07-01    |
| Michel |    3 | 2020-08-01    |
+--------+------+---------------+

我的目标是选择所有教师和学生的和值,按日期分组。结果应该如下所示:

代码语言:javascript
复制
+------------------+---------------+---------------+
| totalInstructors | totalStudents | creation_date |
+------------------+---------------+---------------+
|                1 |             2 | 2020-07-01    |
|                0 |             1 | 2020-08-01    |
+------------------+---------------+---------------+

在这种情况下,在2020年-07-01年,我注册了1名讲师和2名学生,在2020-08-01年度,我没有教员,我注册了1名学生。

我的问题是我在设置这个查询时遇到了困难,如果有人能帮我的话,非常感谢你!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-06 16:47:43

您需要使用case语句进行计数,如下所示

代码语言:javascript
复制
select count(case when role=2 then 1 end) as totalInstructors 
      ,count(case when role=3 then 1 end) as totalStudents 
      ,creation_date 
  from tbl
group by creation_date
票数 1
EN

Stack Overflow用户

发布于 2020-07-06 16:47:10

使用条件聚合:

代码语言:javascript
复制
SELECT
    creation_date,
    COUNT(CASE WHEN role = 2 THEN 1 END) AS totalInstructors,
    COUNT(CASE WHEN role = 3 THEN 1 END) AS totalStudents
FROM yourTable
GROUP BY
    creation_date;

Demo

票数 1
EN

Stack Overflow用户

发布于 2020-07-06 16:48:56

请使用以下查询,

代码语言:javascript
复制
select 
case when role = 2 then count(1) end as totalInstructors,
case when role = 3 then count(1) end as totalStudents,
creation_date
from table_name
group by  creation_date;

可以使用COALESCE()将null替换为0。

代码语言:javascript
复制
select COALESCE(totalInstructors, 0) as totalInstructors, COALESCE(totalStudents, 0) as totalStudents,creation_date
from
(select 
case when role = 2 then count(1) end as totalInstructors,
case when role = 3 then count(1) end as totalStudents,
creation_date
from table_name
group by  creation_date) qry;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62760670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档