我有一个表格,其中包含学生的姓名、电子邮件、职位等,以及他们的“状态”(可以是 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 中(仅)true
是 1
和 false
是 0
,所以条件的 sum()
计算它为真的次数:)
关于mysql - JOIN 来自同一张表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14279757/