sql - SQL中的条件COUNT与表连接
问题描述
我有这个查询:
SQL> SELECT DISTINCT Module.module_name, Instructor.Instructor_name
2 FROM InstructorMailingAddressModPer
3 JOIN Module ON InstructorMailingAddressModPer.module_id = Module.module_id
4 JOIN Instructor ON InstructorMailingAddressModPer.instructor_id = Instructor.instructor_id
5 ORDER BY module_name;
我试图只显示多个讲师的结果,例如针对经理、数据库等的模块名称的会计和财务
我想出了以下查询,但搞砸了,这个查询只是为了说明我的思考过程:
SELECT Module.module_name, Instructor.Instructor_name
2 FROM (
3 SELECT Module.module_name, Instructor.Instructor_name
4 COUNT(DISTINCT InstructorMailingAddressModPer.module_id) CNT
5 FROM InstructorMailingAddressModPer
6 JOIN Instructor ON InstructorMailingAddressModPer.instructor_id = Instructor.instructor_id
7 JOIN Module ON InstructorMailingAddressModPer.module_id = Module.module_id
8 WHERE CNT > 1;
解决方案
一种方法是窗口函数:
SELECT module_name, Instructor_name, cnt
FROM (SELECT m.module_name, i.Instructor_name,
COUNT(*) OVER (PARTITION BY m.module_name) as cnt
FROM InstructorMailingAddressModPer ima JOIN
Module m
ON ima.module_id = m.module_id JOIN
Instructor i
ON ima.instructor_id = i.instructor_id
) mi
WHERE cnt > 1
ORDER BY module_name;
推荐阅读
- python - 通过 Selenium 选择元素不起作用
- python - 这个 dict 理解在这个程序中是如何工作的?
- mysql - Django 唯一约束无法正常工作
- c - 让几乎是白色的像素透明的C代码解读——HSV颜色模型的价值
- javascript - 如何在 ComboBoxListItemPicker 上设置选定的值?@pnp/spfx-controls-react
- python - Python 日期未正确绘制
- javascript - 如何将 Base64 编码的字符串转换为可以在 chrome 浏览器中显示的任何其他图像格式
- python - python elasticsarch集成
- typo3 - TYPO3 Extbase 表单引用者大小写错误
- python - 如何对包含在对象中的列表进行排序