Sql 为顶点饼图放置和未放置的返回学生

Sql 为顶点饼图放置和未放置的返回学生,sql,oracle,oracle-apex,Sql,Oracle,Oracle Apex,我正试图为一个顶点饼图写一个查询,该饼图显示了有多少学生被安排实习,还有多少学生没有被安排实习 有一个主键为record\u number的students表和一个外键指向record\u number的applications表。申请表有一个status\u id字段,该字段是值3,4或7,如果学生被安排实习,任何其他值表示他们没有被安排实习 这是我到目前为止的查询,它成功地显示了那些被安排实习的人: SELECT NULL AS link, 'Placed' AS label, COUNT(

我正试图为一个顶点饼图写一个查询,该饼图显示了有多少学生被安排实习,还有多少学生没有被安排实习

有一个主键为
record\u number
students
表和一个外键指向
record\u number
的applications表。申请表有一个
status\u 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

非常感谢您的帮助。

像这样使用sql union

选择NULL作为链接,“放置”作为标签,计数(*)作为值 来自tbl_学生 使用(记录编号)加入tbl_应用程序 其中applications.status_id位于(3,4,7)

联合

选择NULL作为链接,“未定位”作为标签,计数(*)作为值 来自tbl_学生 使用(记录编号)加入tbl_应用程序
如果applications.status\u id不在(3、4、7)中,请像这样使用sql union

选择NULL作为链接,“放置”作为标签,计数(*)作为值 来自tbl_学生 使用(记录编号)加入tbl_应用程序 其中applications.status_id位于(3,4,7)

联合

选择NULL作为链接,“未定位”作为标签,计数(*)作为值 来自tbl_学生 使用(记录编号)加入tbl_应用程序
如果applications.status\u id不在(3、4、7)

中,以下假设每个tbl\u学生在tbl\u申请中只有一条记录:

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;

以下假设每个tbl_学生在tbl_申请中只有一个记录:

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;

有使用自连接的替代方案,但为此我需要知道表的结构有使用自连接的替代方案,但为此我需要知道表的结构