sql - 无法计算客人在 2 家不同餐厅的出现次数并显示客人姓名
问题描述
我试图回答的问题是:查找在 20 年 6 月 15 日访问超过 2 家不同餐厅的客人的姓名。
有一个:Guest table with GID,Gname Visit table with VID, GID, RESTID, VDATE Restaurant table with RESTID, RNAME
每当我尝试引入 groupby 时,我都会收到错误消息
SELECT GuestN.GID, GuestN.Gname
FROM GuestN
WHERE GuestN.GID IN (
SELECT VisitN.GID
FROM VisitN
WHERE VisitN.Vdate = '15-JUN-20' AND VisitN.restID IN (
SELECT RestaurantN.Restid
FROM RestaurantN having count(*)>2));
解决方案
RestaurantN
不需要这张桌子,因为你restID
在桌子上VisitN
,你对餐厅的名字不感兴趣,而只对他们的号码感兴趣。在子句中
加入GuestN
、VisitN
聚合和设置条件:HAVING
SELECT g.GID, g.Gname
FROM GuestN g INNER JOIN VisitN v
ON v.GID = g.GID
WHERE v.Vdate = '15-JUN-20'
GROUP BY g.GID, g.Gname
HAVING COUNT(DISTINCT v.restID) > 2