1

我有直觉,我错过了一些简单的东西,所以如果这是一个愚蠢的问题,请原谅我,但我无法在这里找到答案。

我正在处理具有使用行为的数据库。我们每个用户有一行,包含日期和时间(加上其他不相关的信息)。

我想输出每天访问次数的直方图,以及持续超过一定时间的访问次数;理想情况下,我想在一个查询中找到它。

现在我有这两个查询:

SELECT DATE(date), COUNT(date) AS Number_of_users FROM users GROUP BY DATE(date)
SELECT DATE(date), COUNT(date) AS Number_of_stayers FROM users WHERE timespent>5 GROUP BY DATE(date)

我如何将它们组合起来以获得以下形式的结果:

date        users       stayers
2014-01-01  21          5
2014-01-02  13          0

等等

提前感谢您的帮助!

4

2 回答 2

1

您可以尝试使用IF,如下所示:

SELECT DATE(date), 
       COUNT(date) AS Number_of_users,
       SUM(IF(timespent>5,1,0)) AS Number_of_stayers 
FROM users 
GROUP BY DATE(date)
于 2014-06-26T09:42:53.097 回答
1

这应该可以工作,或者至少显示使用 JOIN 的基本思想:

SELECT DATE(a.date), 
    COUNT(a.date) AS Number_of_users, 
    COUNT(b.date) AS Number_of_stayers 
FROM users a 
LEFT JOIN users b ON (a.date = b.date AND b.timespent>5)
于 2014-06-26T09:44:27.693 回答