我正在学习SQL。我拥有的数据集如下所示:
city_name | work_place_name | min_commute_time | max_commute_time
-------------------------------------------------------------------
Austin CONGRESS 25 45
Austin NASA 10 12
Austin CIRCUS 16 35
CEDAR PARK CONGRESS 35 65
CEDAR PARK NASA 28 60
CEDAR PARK CIRCUS 26 55
KYLE CONGRESS 50 85
KYLE NASA 60 100
KYLE CIRCUS 60 100
我正在尝试找出哪个城市的CONGRESS和NASA的最小通勤时间小于或等于30。我提出了以下查询,但是没有得到想要的结果。
SELECT city_name
FROM commute_times
WHERE min_commute_time<=30 AND (work_place_name='NASA' OR work_place_name='CONGRESS')
我得到的结果是:
city_name
-----------
Austin
Austin
Cedar Park
我希望得到的结果是:
City_name
-----------
Austin
答案 0 :(得分:0)
您很近。聚合将填充缺失的部分:
SELECT city_name
FROM commute_times
WHERE min_commute_time <= 30 AND
work_place_name IN ('NASA', 'CONGRESS')
GROUP BY city_name
HAVING COUNT(*) = 2;