【问题标题】:join results of two mysql queries on the same table在同一张表上连接两个mysql查询的结果
【发布时间】:2014-08-17 02:22:03
【问题描述】:

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

我正在处理具有使用行为的数据库。我们为每位用户提供一行,其中包含所花费的日期和时间(以及其他不相关的信息)。

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

现在我有这两个查询:

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

等等

提前感谢您的帮助!

【问题讨论】:

  • 你能再解释一下,你想要什么输出?

标签: mysql multiple-results


【解决方案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)

【讨论】:

    【解决方案2】:

    这应该可行,或者至少展示了使用 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多