SQL LeetCode刷题系列(九)——体育馆的人流量

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/liuzuoping/article/details/102584815

题目描述

X 市建了一个新的体育馆,每日人流量信息被记录在这三列信息中:序号 (id)、日期 (visit_date)、 人流量 (people)。

请编写一个查询语句,找出人流量的高峰期。高峰期时,至少连续三行记录中的人流量不少于100。

在这里插入图片描述
在这里插入图片描述

题解

SELECT A.*
FROM
    stadium A
INNER JOIN
    stadium B
ON A.id=B.id+1
INNER JOIN
    stadium C
ON A.id=C.id+2
WHERE A.people>=100
    AND B.people>=100
    AND C.people>=100
UNION
SELECT B.*
FROM
    stadium A
INNER JOIN
    stadium B
ON A.id=B.id+1
INNER JOIN
    stadium C
ON A.id=C.id+2
WHERE A.people>=100
    AND B.people>=100
    AND C.people>=100
UNION
SELECT C.*
FROM
    stadium A
INNER JOIN
    stadium B
ON A.id=B.id+1
INNER JOIN
    stadium C
ON A.id=C.id+2
WHERE A.people>=100
    AND B.people>=100
    AND C.people>=100
ORDER BY id;

解题思路

这一题和我们上次做过的一个题很像
SQL LeetCode刷题系列(六)——连续出现的数字
但是连续出现的数字只需要把数字选出来就可以了,同样用到了三表联合,而这一题不仅仅要用到三表联合,还要将连续不少于100的人流量记录筛选出来,所以会连续union两次

猜你喜欢

转载自blog.csdn.net/liuzuoping/article/details/102584815