需要取每天前5的数据,然后各种百度,由于只有oracle有rank() over (partition by,所以mysql就特别麻烦,找到了2种方法
方法一:
select * from cqyd b where b.时间 between '2019-12-08' and '2019-12-09'
and 3>(select count(1) from cqydc where b.时间=c.时间 and c.请求频次>b.请求频次)
方法二:
SELECT
*
FROM
cqyd AS a
LEFT JOIN cqyd AS b ON a.时间 = b.时间
AND a.请求频次 < b.请求频次
WHERE
1=1
GROUP BY
a.时间,
a.请求频次
HAVING
count(1) < 5
ORDER BY
a.时间 ASC,
a.请求频次 DESC;
比较:
方法一在百度上面特别多,且效率特别低,只查询两天的数据,且没有索引,共3600条数据,执行了600秒,而方法二执行了不到200秒。
做个记录!