首页 > 解决方案 > 无法计算客人在 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));

标签: sqloracle

解决方案


RestaurantN不需要这张桌子,因为你restID在桌子上VisitN,你对餐厅的名字不感兴趣,而只对他们的号码感兴趣。在子句中
加入GuestNVisitN聚合和设置条件: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

推荐阅读