【发布时间】:2020-10-14 13:39:09
【问题描述】:
给定一张表,我们称之为 performance6a - 带表结构>> 学生ID |数学 |历史 |语言 |科学
我需要编写一个生成如下报告的查询 -
组数基于2个类别,在这种情况下,通过或失败然后主题。
请注意,这些操作是在无法规范化或重新设计的系统表上执行的。两个类别的数量都可以增长(类别 - 通过/失败可以增加到 100 和类别 - 主题可以增加到 ~5k)
我尝试过的:
(SELECT 'PASS' AS STATUS, 'MATH', COUNT(ID) FROM PERFORMANCE6A WHERE MATH > 30) UNION
(SELECT 'FAIL' AS STATUS, 'MATH', COUNT(ID) FROM PERFORMANCE6A WHERE MATH <= 30) UNION
(SELECT 'PASS' AS STATUS, 'HISTORY', COUNT(ID) FROM PERFORMANCE6A WHERE HISTORY > 30) UNION
(SELECT 'FAIL' AS STATUS, 'HISTORY', COUNT(ID) FROM PERFORMANCE6A WHERE HISTORY <= 30) UNION
(SELECT 'PASS' AS STATUS, 'LANGUAGE', COUNT(ID) FROM PERFORMANCE6A WHERE LANGUAGE > 30) UNION
(SELECT 'FAIL' AS STATUS, 'LANGUAGE', COUNT(ID) FROM PERFORMANCE6A WHERE LANGUAGE <= 30) UNION
(SELECT 'PASS' AS STATUS, 'SCIENCE', COUNT(ID) FROM PERFORMANCE6A WHERE SCIENCE > 30) UNION
(SELECT 'FAIL' AS STATUS, 'SCIENCE', COUNT(ID) FROM PERFORMANCE6A WHERE SCIENCE <= 30);
这个查询给了我正确的输出,但是执行时间超过了 2 秒。 我正在寻找优化查询的想法。
【问题讨论】:
标签: sql db2 system-tables