gpt4 book ai didi

mysql - 按过去一小时的观看次数排序 [MySQL]

转载 作者:可可西里 更新时间:2023-11-01 08:36:48 25 4
gpt4 key购买 nike

我有一张表,其中包含过去 24 小时内的所有 View 。我想拉出按排名排序的所有页面。排名应该像这样计算:

rank = (0.3 * viewsInCurrentHour) * (0.7 * viewsInPreviousHour)

我希望在一个查询中得到最好的结果。这可能吗,或者我是否需要进行 2 次查询(一个针对当前小时,一个针对最后一小时,然后将它们汇总)?

这是表 accesslogDESCRIBE:

+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| aid | int(11) | NO | PRI | NULL | auto_increment |
| sid | varchar(128) | NO | | | |
| title | varchar(255) | YES | | NULL | |
| path | varchar(255) | YES | | NULL | |
| url | text | YES | | NULL | |
| hostname | varchar(128) | YES | | NULL | |
| uid | int(10) unsigned | YES | MUL | 0 | |
| timer | int(10) unsigned | NO | | 0 | |
| timestamp | int(10) unsigned | NO | MUL | 0 | |
+-----------+------------------+------+-----+---------+----------------+

最佳答案

select
url,
sum(timestamp between subdate(now(), interval 2 hour) and subdate(now(), interval 1 hour)) * .3 +
sum(timestamp between subdate(now(), interval 1 hour) and now()) * .7 as rank
from whatever_your_table_name_is_which_you_have_kept_secret
where timestamp > subdate(now(), interval 2 hour)
group by url
order by rank desc;

sum(condition) 起作用是因为在 mysql 中 trye1false0 ,所以对条件求和与一些新手写的相同 sum(case when condition then 1 else 0 end)

编辑:

请注意添加 where timestamp > subdate(now(), interval 2 hour) 以提高性能,因为只有这些记录对结果有贡献。

关于mysql - 按过去一小时的观看次数排序 [MySQL],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664356/

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