【发布时间】:2015-04-23 07:35:54
【问题描述】:
我有 2 张桌子 class 和 grade。
这是class 表中的示例行:
C_NAME....C_TIME...F_NAME..C_ROOM...SEMESTER
INSS300...M5:30....DWIGHT..219BC....FALL11
INSS300...T5:30....KEEN....216BC....FALL11
MKT300....M5:30....Lee.....112BC....SP11
MKT300....W5:30....Lee.....112BC....SP11
INSS421...T5:30....CORY....212BC....FALL11
FIN300....TH5:30...KEEN....219BC....FALL11
INSS300...W5:30....CORY....219BC....FALL11
INSS300...F5:30....CORY....216BC....FALL11
INSS422...F5:30....KEEN....219BC....FALL11
这是grade 表中的示例数据
S_NAME C_NAME G
LARRY....INSS300....B
LARRY....FIN300.....A
SONY.....INSS300....C
SONY.....INSS421....C
GRAY.....INSS300....C
GRAY.....INSS421....D
TRUDY....INSS300....B
DRUM.....INSS421....A
DRUM.....FIN300.....B
PURI.....INSS422....C
APPLE....INSS422....C
LARRY....INSS422....C
LARRY....INSS300....B
SONY.....INSS300....C
GRAY.....INSS300....C
TRUDY....INSS300....B
我必须回答的问题是:
假设这些表在您的帐户 Ordb002 中。你需要阅读 仅对您的组成员 Sally 的所有三个表的权限 帐户是 Ordb009。假设您已授予 Sally 读取权限 所有表。 Sally 想要计算成绩(即 A、B、c 等) 由教师和课程。为 SALLY 编写查询以获取此计数。
我想出了这个查询
select cla.f_name
, gra.c_name
, count(grade)
, grade
from class1 cla
, grade1 gra
where cla.c_name=gra.c_name
group by cla.f_name
, gra.c_name
, grade
order by cla.f_name
, gra.c_name;
这给了我以下输出:
F_NAME C_NAME COUNT(GRADE) G
-------------------- ---------- ------------ -
CORY INSS300 4 B
CORY INSS300 4 C
CORY INSS421 1 A
CORY INSS421 1 C
CORY INSS421 1 D
DWIGHT INSS300 2 B
DWIGHT INSS300 2 C
KEEN FIN300 1 A
KEEN FIN300 1 B
KEEN INSS300 2 B
KEEN INSS300 2 C
KEEN INSS422 3 C
当可能性只能是 2b 和 2c 时,我不知道为什么 4b 和 4c 会出现在输出的顶部。
有什么建议吗?
【问题讨论】:
标签: sql oracle join count group-by