具有两个条件的 MySql SELECT COUNT

标签 mysql group-by

我正在尝试执行一个查询,以获取过去一小时和过去两个小时的数据。它只是一个点击计数器。

所以我想得到如下结果集:

id, page_url, last_hour_hits, two_last_hours_hits

表格很简单:

id (autonumber)
page_url
time_stamp

我试过下面的查询:

SELECT
page_url,
COUNT(page_url) AS last_hour_hits
FROM stats
WHERE time_stamp > '2015-08-01 00:00:00'
GROUP BY page_url

('2015-08-01 00:00:00' 计算最后一小时)

它工作正常,但我现在知道如何添加“two_last_hours”计数器。

提前谢谢你。

最佳答案

对于 MySQL,您可以使用 bool 表达式返回 1 的事实并将查询简化为:

SELECT 
    page_url
    ,sum(time_stamp > (now() - interval 1 hour)) as last_hour_hits
    ,sum(time_stamp > (now() - interval 2 hour)) as two_last_hours_hits
FROM stats
GROUP BY page_url;

这使用 now() 获取当前时间并根据需要减去时间间隔。

关于具有两个条件的 MySql SELECT COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31762976/

相关文章:

mysql - 如何使用一个表中的属性来计算不同表中属性的值?

php - 将 mysql 查询的结果对象获取到函数中的问题

mysql - 如何进行 GROUP BY 然后 LEFT JOIN?

mysql - 收到 "[Err] 1111 - Invalid use of group function"错误

r - 从单行中相同 UserID 的不同列收集非空行(POSIXct 格式)

php - MySQL查询打印双记录

java - 如何防止 Jtable 和 MYSQL(数据库)中的重复条目?

r - 根据 2 列中的组唯一 ID 创建序列号

mysql分组和排序而不使用最外面的order by

r - 通过对 r 中的另一列进行分组来求 n 行的平均值