返回为APEX饼图放置和未放置的学生

时间:2012-12-05 00:02:37

标签: sql oracle oracle-apex

我正在尝试为APEX饼图写一个查询,显示有多少学生被安排实习,有些学生则没有。

有一个students表,其主键为record_number,而一个应用程序表的外键指向record_number。如果学生被安排实习,那么应用程序表会有status_id字段,其值为347,而其他任何值都表示未放置在实习。

这是我到目前为止的查询,它成功地显示了那些被实习的人:

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)

这成功地返回一行,显示有多少学生被安排实习,但我需要它再返一行,显示没有实习的学生数量,同时仍然只有这三个领域( linklabelvalue)。

举一个例子,如果我在数据库中有10名学生,其中4名是实习生,那么查询应该返回这些行:

link    |    label    |    value
---------------------------------
(null)  | Placed      | 4
(null)  | Unplaced    | 6

非常感谢任何帮助。

2 个答案:

答案 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)