我正在尝试为APEX饼图写一个查询,显示有多少学生被安排实习,有些学生则没有。
有一个students
表,其主键为record_number
,而一个应用程序表的外键指向record_number
。如果学生被安排实习,那么应用程序表会有status_id
字段,其值为3
,4
或7
,而其他任何值都表示未放置在实习。
这是我到目前为止的查询,它成功地显示了那些被实习的人:
SELECT NULL AS link, 'Placed' AS label, COUNT(*) AS value
FROM tbl_students students
JOIN tbl_applications applications USING (record_number)
WHERE applications.status_id IN (3, 4, 7)
这成功地返回一行,显示有多少学生被安排实习,但我需要它再返一行,显示没有实习的学生数量,同时仍然只有这三个领域( link
,label
和value
)。
举一个例子,如果我在数据库中有10名学生,其中4名是实习生,那么查询应该返回这些行:
link | label | value
---------------------------------
(null) | Placed | 4
(null) | Unplaced | 6
非常感谢任何帮助。
答案 0 :(得分:1)
以下假设每个tbl_students在tbl_applications中只有一条记录:
SELECT NULL AS link,
CASE WHEN applications.status_id IN (3,4,7)
THEN 'Placed' ELSE 'Unplaced'
END AS label,
COUNT(*) AS value
FROM tbl_students students
JOIN tbl_applications applications USING (record_number)
GROUP BY CASE WHEN applications.status_id IN (3,4,7)
THEN 'Placed' ELSE 'Unplaced'
END;
答案 1 :(得分:0)
像这样使用sql union
SELECT NULL AS链接,'已放置'AS标签,COUNT(*)AS值 来自tbl_students学生 JOIN tbl_applications应用程序USING(record_number) where applications.status_id IN(3,4,7)
联盟
SELECT NULL AS链接,'未放置'AS标签,COUNT(*)AS值 来自tbl_students学生 JOIN tbl_applications应用程序USING(record_number) where applications.status_id NOT IN(3,4,7)