Создайте распределение количества активных дней недели. SQL - PullRequest
0 голосов
/ 15 января 2020

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

Date    CustomerID
1/1        12
1/3        32
1/3        42 
1/4        52
1/4        62  
1/5        75

Я хочу создать распределение # дней, активных в течение недели: создайте таблицу, показывающую, сколько участников активно за 1 день, 2 дня, 3 дня,… 7 дней в течение 3 / 1-3 / 7.

Снимок экрана с желаемым результатом

Я написал этот запрос. Будет ли это работать?

SELECT COUNT (DISTINCT date) AS ‘#Days Active’, COUNT(DISTINCT memberID) AS ‘Count’ 
FROM User Table 
WHERE date BETWEEN ‘03/01/17’ AND 03/07/17 
GROUP by COUNT (DISTINCT date) 
ORDER BY COUNT (DISTINCT date) ASC;

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Если я не понимаю ваше значение, код отображается следующим образом: это двухэтапный запрос: шаг1: получить активные дни для каждого члена; шаг2: получить количество участников для каждого вида активных дней.

SELECT active_days, count(*) AS member_cnt
  FROM(
       SELECT CustomerID, count(*) AS active_days
         FROM your_table_name
        GROUP BY CustomerID)a
 GROUP BY active_days
0 голосов
/ 15 января 2020

Если я правильно понял, ваша таблица имеет несколько строк на одного клиента. Например, у клиента 12 есть одна строка между датами ввода, а у клиента 32 есть 3 строки между датами ввода.

Сначала необходимо сгруппировать по customerId, чтобы получить activeDayCounts, а затем сгруппировать по activeDays, чтобы подсчитать клиента

* 1004. *

Вы можете проверить пример по ссылке https://dbfiddle.uk/?rdbms=sqlserver_2012&fiddle=19a3187913985faef617d9110730feba

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...