编写SQL代码以连续三天输出超过100名访问者



有一个表格 游客 记录七月期间一个地方的游客数量

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)

最新更新