sql - SQL 查询以查找与表中其他元素相关的最常见元素
问题描述
我有一个包含以下表格的医院数据库:
equipment
id CHAR(40) NOT NULL,
model CHAR(20) NOT NULL,
serialno VARCHAR(20) NOT NULL,
release_date DATE,
PRIMARY KEY (id)
和
appointmentrelations
appointment_id CHAR(40) NOT NULL,
medicine_id CHAR(40) NOT NULL,
equipment_id CHAR(40) NOT NULL,
PRIMARY KEY (appointment_id, medicine_id, equipment_id),
FOREIGN KEY (appointment_id) REFERENCES appointment(id),
FOREIGN KEY (medicine_id)REFERENCES medicineprice(medicine_id),
FOREIGN KEY (equipment_id) REFERENCES equipment(id)
和其他一些其他表格。
预约表描述了医院的预约,并将预约与其中使用的设备和药物联系起来。
我想写一个查询,找出与他的年龄相关的最常用的设备。
appointmentrelations
a1 m1 e1
a2 m2 e2
a3 m3 e3
a4 m3 e3
a5 m4 e2
equipment
e1 model1 se1 2004-07-14
e2 model2 se2 2017-10-19
e3 model3 se3 2015-01-08
在上面的示例中,与他的年龄相关的使用最多的设备是 e2。
我尝试了以下方法:
SELECT equipment_id, COUNT(DISTINCT appointment_id) AS ab
FROM appointmentrelations
GROUP BY equipment_id
ORDER BY ab DESC
LIMIT 1
计算每种设备使用的不同约会的数量,但我不知道如何将其与设备年龄联系起来。
解决方案
如果我理解正确,您可以将当前查询包装在subquery
:
SELECT *
FROM equipment e
WHERE id = (SELECT equipment_id
FROM appointmentrelations
GROUP BY equipment_id
ORDER BY COUNT(DISTINCT appointment_id) DESC
LIMIT 1);
推荐阅读
- visual-studio-code - 在 VS Code 终端中记录 JavaScript 数组
- sql - 如何执行动态过程
- swift - Tableview 单元格使动态编辑样式发生变化
- asp.net-mvc - Asp.Net core Razor Taghelpers - 强制参数
- javascript - 我可以对目录中的任何文件使用什么快速路由?
- archlinux - Arch Linux - 在我运行 startx 之前,DisplayPort 上没有输出
- android - Android 背景尺寸 - 调整大小以适合所有设备
- java - 服务器和客户端之间的通信标准
- java - 使用 oracle 序列和序列生成器创建字符串 ID
- android - 抽象服务接口改造