一、力扣原题:体育馆的人流量
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/human-traffic-of-stadium
以下是力扣原题:
X 市建了一个新的体育馆,每日人流量信息被记录在这三列信息中:序号 (id)、日期 (visit_date)、 人流量 (people)。
请编写一个查询语句,找出人流量的高峰期。高峰期时,至少连续三行记录中的人流量不少于100。
例如,表 stadium:
对于上面的示例数据,输出为:
提示:
每天只有一行记录,日期随着 id 的增加而增加。
题解:
方法:使用 JOIN
和 WHERE
子句。
思路:
-
在表
stadium
中查询人流量超过 100 的记录,将查询结果与其自身的临时表连接,再使用WHERE
子句获得满足条件的记录。 -
a,b 和 c 相同,重点是需要考虑添加哪些条件能够得到想要的结果。以 a为例,它有可能是高峰期的第 1 天,第 2 天,或第
3 天。 -
用排列的方式的话有6个条件
(1、a是高峰期第1天,b是高峰期第2天,c是高峰期第3天;
2、a是高峰期第1天,b是高峰期第3天,c是高峰期第2天;
3、a是高峰期第2天,b是高峰期第1天,c是高峰期第3天;
4、a是高峰期第2天,b是高峰期第3天,c是高峰期第1天;
5、a是高峰期第3天,b是高峰期第1天,c是高峰期第2天;
6、a是高峰期第3天,b是高峰期第2天,c是高峰期第1天;)
根据上面的思路给出SQL语句如下:
select distinct a.* from stadium a,stadium b,stadium c
where a.people>=100 and b.people