mysql - JOIN 来自同一张表的数据

标签 mysql database join

我有一个表格,其中包含学生的姓名、电子邮件、职位等,以及他们的“状态”(可以是 Y 或 N。)我想编写一个查询来计算每个学生的数量位置的类型,以及使用 JOIN 的每种类型中 Y 的数量和 N 的数量。 (也就是说,它将是一个包含三列的表格:Position、StatusIsYes 和 StatusIsNo。)

我已经通过以下方式使用 CASE 子句完成了此操作,但我不知道如何使用 JOIN 子句来完成此操作。

SELECT position,
COUNT(CASE WHEN status = 'Y' THEN 1 ELSE NULL END) AS StatusIsYes,
COUNT(CASE WHEN status = 'N' THEN 1 ELSE NULL END) AS StatusIsNo
 FROM 
students GROUP BY crd

我很感激任何建议!

编辑:我知道它可以使用 JOIN 来完成,但我想知道如何使用 JOIN 来完成它。

最佳答案

你不需要连接:

SELECT
    position,
    SUM(status = 'Y') AS StatusIsYes,
    SUM(status = 'N') AS StatusIsNo
FROM students
GROUP BY position

请注意 CASE 的相当时髦的分配,因为在 mysql 中(仅)true1false0,所以条件的 sum() 计算它为真的次数:)

关于mysql - JOIN 来自同一张表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14279757/

相关文章:

java - MySQL、Eclipse 和 Java - 是否需要 Ant?

mysql - 使用 ORDER BY 对结果进行排序时,LEFT JOIN 花费的时间太长

database - 实现 SQL 3NF 规范化

database - 应对数据库身份/自动编号最大化的策略

php - 通过中间表筛选基于相似类别的结果

java - 如何使用ItemWriter执行mysql LOAD DATA INFILE?

java - 使用 EntityManagerFactory 获取刚刚添加的对象

mysql - 如何从 MySQL 表中获取同一 ID 的最新时间戳记录?

sql-左连接-计数

mysqldump 错误 1045 访问被拒绝,尽管密码正确等