我有一种直觉,我错过了一些简单的东西,所以请原谅我这是一个愚蠢的问题,但我在这里找不到答案。
我正在使用使用行为来处理数据库。我们每个用户有一行,包括日期和时间(以及其他不相关的信息)。
我想输出每日访问次数的直方图,以及持续超过一定时间的访问次数;理想情况下,我希望在一个查询中有这个。
现在我有这两个问题:
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
等
提前感谢您的帮助!
答案 0 :(得分: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)
答案 1 :(得分: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)