gpt4 book ai didi

mysql - 在 MySql 中跨两个维度对数据进行分组

转载 作者:行者123 更新时间:2023-11-29 10:36:29 25 4
gpt4 key购买 nike

我是一个 MySql(和 Sql)菜鸟,所以请原谅这个问题的模糊性。请询问您是否需要澄清。我将提供一个有点人为的例子来说明问题。

假设我有一个学校数据库。学校要组织一年一度的运动会,有关谁报名参加该事件的信息存储在一个表中,如下所示:

+---------------+-------+------------+
| signup_status | grade | student_id |
+---------------+-------+------------+
| True | 1 | 1001 |
| True | 2 | 2010 |
| True | 1 | 1101 |
| True | 2 | 2002 |
| False | 1 | 1012 |
+---------------+-------+------------+

现在,学校想要按年级分割有多少 child 报名参加了该事件。所以他们希望看到这样的东西:

+----------------+----------------------------+
| Grade / Status | Signed up | Didn't sign up |
+----------------+-----------+----------------+
| 1 | 2 | 1 |
| 2 | 2 | 0 |
+----------------+-----------+----------------+

我知道我可以运行类似的东西

SELECT count(`student_id`) as `count`, IF(`status`, 'Yes', 'No') as `signed_up`, `grade`
GROUP BY `grade`, `signed_up`
ORDER BY `grade` ASC

要得到这个:

+-----------+---------------+-----------+
| Count | Signed up | Grade |
+-----------+---------------+-----------+
| 2 | Yes | 1 |
| 1 | No | 1 |
| 2 | Yes | 2 |
| 0 | No | 2 |
+-----------+---------------+-----------+

我的问题是,如上所述,我如何从这里到达我想要的?

提前致谢。

最佳答案

使用条件聚合:

select grade, sum(status) as signedup, sum(not status)
from t
group by grade;

MySQL 将 bool 值视为数字上下文中的数字,“1”表示 true,“0”表示 false。

关于mysql - 在 MySql 中跨两个维度对数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46331294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com