我有 2 个表,一个包含人员,另一个包含参考人员 ID 的注册。我必须创建一个视图,其中仅包含注册中出现超过 4 次的结果。
我想我需要使用count()
,但我无法计算我需要它来做什么。你如何输出一个只包含在登记表中出现超过 4 次的人的表?
以下是一些示例行以及我尝试做的事情:
表enrolment
:
ID | 学生 |
---|---|
462583 | 1010093 |
464457 | 1010093 |
469823 | 1010093 |
471345 | 1010093 |
473239 | 1010093 |
475371 | 1010093 |
477419 | 1010093 |
479797 | 1010093 |
572312 | 1010138 |
577147 | 1010138 |
578866 | 1010138 |
580596 | 1010138 |
582497 | 1010138 |
学生 1010093 和 1010138 符合标准,因为他们出现了 4 次以上。但是有很多学生的参赛作品较少。
表people
:
(id 是学生栏内注册所指的 id)。
ID | 统一标识 | 姓名 |
---|---|---|
10000019 | 8758024 | 金刚砂舒伯特 |
10000021 | 9808692 | 安摩尔 |
10000025 | 9833783 | 张振天 |
10000026 | 7610575 | 约翰·卡里克 |
10000035 | 9837669 | 帕梅拉莫特 |
10000037 | 9049091 | 萨米·科雷尔 |
10000049 | 9869271 | 门格斯图琥珀 |
10000051 | 9375982 | 科林方 |
10000053 | 9146607 | 黛安·蒙哥马利 |
10000073 | 9804805 | 格兰特·沃尔特 |
1010093 | 2220747 | 芭芭拉·弗雷姆德 |
1010138 | 2240781 | Say-Kit Ezergailis |
1011114 | 2119574 | 伊万杰罗斯·麦克唐纳 |
1011293 | 2291530 | 格蕾丝·霍克斯特拉 |
1011474 | 2261154 | 奇杰拉杰 |
我的尝试是这样的:
create or replace view Q1(uniid,name) as
select people.uniid, people.name
from people left outer join enrolments on (people.id = enrolments.student)
group by people.uniid, people.name having count(enrolments.student) > 4;
样本输出:
统一标识 | 姓名 |
---|---|
3100280 | 米娅·维希 |
3225571 | 科拉·普罗查斯卡 |
3335780 | 永河 |
3255146 | 莫阳刘洪涛 |
3365147 | 弗朗西丝·埃勒斯 |
3327487 | 凯拉蒂·米乔纳 |
3397549 | 肖恩·迪纳姆 |
3372084 | 本杰明·特南鲍姆 |
3252837 | 凯瑟琳麦克法兰 |
3350110 | 何塞·瓦拉斯 |
3258061 | 艾莉森·莱蒂奇 |
3345581 | 斯内哈尔·塞图 |
汇总注册、过滤,然后才加入人员: