gpt4 book ai didi

Mysql - 从复杂的标准中获取结果

转载 作者:行者123 更新时间:2023-11-29 12:05:15 24 4
gpt4 key购买 nike

我的数据库包含许多网站的统计信息,目前我遇到了一个相当复杂的查询问题,我不知道该怎么做(或者是否可能)。

我有 2 个表:websitesvisits。前者是所有网站及其属性的列表,而前者是每个用户对特定网站的访问列表。

我正在制作的程序应该获取需要“扫描”的网站。每个站点每次扫描之间的间隔取决于该网站过去 30 天的总访问次数。这是一个包含预期扫描间隔的表格:

enter image description here

这些表具有以下结构:

网站 enter image description here

访问 enter image description here

我想要的是一个查询,该查询返回过去其各自更新截止日期的网站(可以从last_scanned 栏)。

这在单个查询中是否可以轻松实现?

最佳答案

您可以尝试以下方法:

SELECT main.* 
FROM (
SELECT
w.web_id,
w.url,
w.last_scanned,
(SELECT COUNT(*)
FROM visits v
WHERE v.web_id = w.web_id
AND TIMESTAMPDIFF(DAY,v.added_on, NOW()) <=30
) AS visit_count,
TIMESTAMPDIFF(HOUR,w.last_scanned, NOW()) AS hrs_since_update
FROM websites w
) main
WHERE
(CASE
WHEN visit_count >= 0 AND visit_count <= 10 AND hrs_since_update >= 4320 THEN 1
WHEN visit_count >= 11 AND visit_count <= 100 AND hrs_since_update >= 2160 THEN 1
WHEN visit_count >= 101 AND visit_count <= 500 AND hrs_since_update >= 1080 THEN 1
WHEN visit_count >= 501 AND visit_count <= 1000 AND hrs_since_update >= 720 THEN 1
WHEN visit_count >= 1001 AND visit_count <= 2000 AND hrs_since_update >= 360 THEN 1
WHEN visit_count >= 2001 AND visit_count <= 5000 AND hrs_since_update >= 168 THEN 1
WHEN visit_count >= 5001 AND visit_count <= 10000 AND hrs_since_update >= 72 THEN 1
WHEN visit_count >= 10001 AND hrs_since_update >= 24 THEN 1
ELSE 0
END) = 1;

这是 fiddle 演示:http://sqlfiddle.com/#!9/1f671/1

关于Mysql - 从复杂的标准中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31593603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com