Объединить результаты двух запросов MySQL в одной таблице
У меня есть интуиция, что я упускаю что-то простое, поэтому, пожалуйста, извините меня, если это глупый вопрос, но я не смог найти ответ здесь.
Я лечу базу данных с использованием поведения. У нас есть одна строка на пользователя с указанием даты и времени (плюс другая не относящаяся к делу информация).
Я хотел бы вывести гистограмму количества посещений в день и количества посещений, которые длились более определенного времени; в идеале я хотел бы иметь это в одном запросе.
На данный момент у меня есть эти два запроса:
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
и т.п.
Заранее благодарю за любую помощь!
2 ответа
Вы можете попробовать использовать 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)
Это должно сработать или, по крайней мере, показать основную идею использования 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)