本文主要是介绍【领扣leetcode数据库】601. 体育馆的人流量最优解 难度 困难,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
X 市建了一个新的体育馆,每日人流量信息被记录在这三列信息中:序号 (id)、日期 (date)、 人流量 (people)。
请编写一个查询语句,找出高峰期时段,要求连续三天及以上,并且每天人流量均不少于100。
例如,表 stadium
:
+------+------------+-----------+ | id | date | people | +------+------------+-----------+ | 1 | 2017-01-01 | 10 | | 2 | 2017-01-02 | 109 | | 3 | 2017-01-03 | 150 | | 4 | 2017-01-04 | 99 | | 5 | 2017-01-05 | 145 | | 6 | 2017-01-06 | 1455 | | 7 | 2017-01-07 | 199 | | 8 | 2017-01-08 | 188 | +------+------------+-----------+
对于上面的示例数据,输出为:
+------+------------+-----------+ | id | date | people | +------+------------+-----------+ | 5 | 2017-01-05 | 145 | | 6 | 2017-01-06 | 1455 | | 7 | 2017-01-07 | 199 | | 8 | 2017-01-08 | 188 | +------+------------+-----------+
Note:
每天只有一行记录,日期随着 id 的增加而增加。
代码
selectstadium.*
from stadium
inner join(selectid-rownum as diff,group_concat(id) as idlist,length(group_concat(id))-length(replace(group_concat(id),',','')) #计算逗号的个数,逗号个数为2时表示三个idfrom(select@rownum:=@rownum+1 as rownum,idfrom stadium,(select @rownum :=0) twhere people>=100)tgroup by id-rownumhaving length(group_concat(id))-length(replace(group_concat(id),',',''))>=2 #表示至少出现三个id)ton find_in_set(stadium.id,t.idlist)
这篇关于【领扣leetcode数据库】601. 体育馆的人流量最优解 难度 困难的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!