有一个表格 游客 记录七月期间一个地方的游客数量
id date visits
1 2017-07-01 100
……
id的值等于日期列中的天值,如何输出连续三天中每年有超过100名访问者的日期?
试试这个。
SELECT id,
date_visit,
visits
FROM (SELECT a.*,
COUNT(*)
OVER (
PARTITION BY rn ) cnt
FROM (SELECT t.*,
id - ROW_NUMBER()
OVER (
ORDER BY id) rn
FROM table1 t
WHERE visits > 100) a) b
WHERE cnt >= 3
ORDER BY id;
我认为这将适用于您的情况。
SELECT * FROM `Tourists`
WHERE `visits` > 100
ORDER BY date [ ASC | DESC ]
LIMIT 3
根据您的要求选择 ASC 或 DESC。
如果我弄错了了解您的需求,请告诉我
如果我们只有一个大于 3 的序列,则投票最多的答案是有效的。如果我们有两个大于 3 的序列怎么办?然后测试结果将失败。
在这种情况下,我提出的解决方案。
with cte as (
select
*,id-ROW_NUMBER() over (order by id) as cn
from Visitors where NO_of_visitor >100
)
select * from cte
where cn >= (select MAX(cn) from cte)