SQL для общего количества и количества в этом, где условие верно

У меня есть таблица отдельного пользователя, и я пытаюсь придумать запрос, который возвращает общее количество всех пользователей, сгруппированных по дате наряду с общим количеством пользователей, сгруппированных по дате, кто имеет определенный клиент.

Вот то, что я имею к настоящему времени, где существует общее количество пользователей, сгруппированных по дате, но, может казаться, не выясняет, как получить количество тех пользователей где пользователь client_id = x

SELECT user.created,
COUNT(user.id) AS overall_count
FROM user
GROUP BY DATE(user.created)

попытка за строку заканчивается как это:

[created] => 2010-05-15 19:59:30
[overall_count] => 10
[client_count] => (some fraction of overall count, the number of users where 
                   user.client_id = x grouped by date)
6
задан Peter Lang 16 May 2010 в 06:35
поделиться

1 ответ

Это должно помочь с MySQL:

SELECT
  user.created,
  COUNT(user.id) AS overall_count,
  SUM(user.client_id = x) AS client_count
FROM user
GROUP BY DATE(user.created)

Логическое выражение user.client_id = x возвращает 1 , если это правда, и 0 в противном случае, поэтому вы можете просто суммировать их.


С другой базой данных вы бы сделали

SUM( CASE WHEN user.client_id = x THEN 1 ELSE 0 END ) AS client_count
15
ответ дан 8 December 2019 в 15:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: