本文主要是介绍mysql查询近100期_MySQL面试题:查找出连续3天以及以上人流量大于100的日期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
X 市建了一个新的体育馆,每日人流量信息被记录在这三列信息中:序号 (id)、日期 (visit_date)、 人流量 (people)。
请编写一个查询语句,找出人流量的高峰期。高峰期时,至少连续三行记录中的人流量不少于100。
输出结果:
来源:力扣网
官方解答:在表stadium中查询人流量超过 100 的记录,将查询结果与其自身的临时表连接,再使用WHERE子句获得满足条件的记录
select distinct t1.*
from stadium t1, stadium t2, stadium t3
where t1.people >= 100 and t2.people >= 100 and t3.people >= 100
and
(
(t1.id - t2.id = 1 and t1.id - t3.id = 2 and t2.id - t3.id =1) -- t1, t2, t3
or
(t2.id - t1.id = 1 and t2.id - t3.id = 2 and t1.id - t3.id =1) -- t2, t1, t3
or
(t3.id - t2.id = 1 and t2.id - t1.id =1 and t3.id - t1.id = 2) -- t3, t2, t1
)
order by t1.id
下面是我自己的写法,如果小伙伴们有更好的写法,欢迎大家留言~~
select min(visitdate) 开始时间,max(visitdate) 结束时间,count(id) 持续天数,sum(people) 人流量 from (select *,row_number() over(order by visitdate asc) 排名 from stadium where people>100) t
group by visitdate-排名
having 持续天数>=3;
执行结果:
这样结果看起来是不是更加清楚呢~~
这篇关于mysql查询近100期_MySQL面试题:查找出连续3天以及以上人流量大于100的日期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!