Объединить результаты двух запросов 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)
Другие вопросы по тегам