关系模式:
VentingMac关系中的属性Enum
是引用Employee关系的外键。
我想列出所有员工姓名(Ename),他们在同一天喝超过3(不同)的可乐 (假设他们每天不喝同样的可乐)
答案 0 :(得分:2)
SELECT e.ename
FROM EMPLOYEE e
WHERE EXISTS(SELECT NULL
FROM VENTINGMAC vm
WHERE vm.enum = e.enum
GROUP BY vm.day, vm.enum
HAVING COUNT(vm.coke) > 3)
SELECT e.ename
FROM EMPLOYEE e
WHERE e.enum IN (SELECT vm.enum
FROM VENTINGMAC vm
GROUP BY vm.day, vm.enum
HAVING COUNT(vm.coke) > 3)
SELECT e.ename
FROM EMPLOYEE e
JOIN (SELECT vm.enum
FROM VENTINGMAC vm
GROUP BY vm.day, vm.enum
HAVING COUNT(vm.coke) > 3) y ON y.enum = e.enum
查询的核心在于检查VENTINGMAC表,特别是使用聚合函数(这意味着需要GROUP BY子句)。我假设VENTINGMAC.day
仅包含DATE(年,月,日) - 没有时间部分使事情复杂化。您需要对此人进行分组,并且表格中的日期可以计算coke
条款中显示的HAVING
值。