Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Количество всех пользователей по месяцам  [new]
denis111111
Member

Откуда:
Сообщений: 165
Добрый день

Есть таблица users с полем created_at

Нужно узнать сколько пользователей есть в системе по месяцам.

Например:
в марте создалось 3 пользователя
в апреле создалось 8 пользователей
в мае создалось 4 пользователя
в июне создалось 9 пользователей

В результате должно быть выборка:
марте: 3
апрель: 11
май: 15
июнь: 24
1 окт 15, 12:40    [18219828]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
dma_caviar
Member

Откуда: https://itproduct.ru
Сообщений: 2361
denis111111,

прям-таки по месяцам? или все же по годам+месяцам
1 окт 15, 12:42    [18219834]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
denis111111
Member

Откуда:
Сообщений: 165
dma_caviar,
годам+месяцам - да
1 окт 15, 12:46    [18219866]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
denis111111,

group by, функции даты-времени и агрегатные функции.
1 окт 15, 12:56    [18219963]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
denis111111
Member

Откуда:
Сообщений: 165
Владислав Колосов,
Ну, я знаю как найти количество созданных пользователей по годам-месяцам:

SELECT CAST(CONCAT(YEAR(created_at) , " ", MONTHNAME(created_at)) AS CHAR), COUNT(*)
FROM users 
GROUP BY YEAR(created_at) , MONTH(created_at)

дальше надо как-то сумировать и делать join...
1 окт 15, 13:02    [18220030]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
Glory
Member

Откуда:
Сообщений: 104751
denis111111
Ну, я знаю как найти количество созданных пользователей

если вы нашли "количество созданных пользователей", то что еще вы собрались суммировать ?
1 окт 15, 13:07    [18220096]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
denis111111
Member

Откуда:
Сообщений: 165
Glory,
автор
Например:
в марте создалось 3 пользователя
в апреле создалось 8 пользователей
в мае создалось 4 пользователя
в июне создалось 9 пользователей

В результате должно быть выборка:
марте: 3
апрель: 11
май: 15
июнь: 24
1 окт 15, 13:13    [18220154]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
dma_caviar
Member

Откуда: https://itproduct.ru
Сообщений: 2361
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
1 окт 15, 13:15    [18220178]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
Glory
Member

Откуда:
Сообщений: 104751
denis111111
Glory,
автор
Например:
в марте создалось 3 пользователя
в апреле создалось 8 пользователей
в мае создалось 4 пользователя
в июне создалось 9 пользователей

В результате должно быть выборка:
марте: 3
апрель: 11
май: 15
июнь: 24

И из этого нужно понять, зачем после COUNT(*) делать еще и "суммирование" ?
1 окт 15, 13:16    [18220179]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
denis111111,

Считайте нарастающий итог по сгруппированным значениям, закладка FAQ на форуме.
1 окт 15, 13:44    [18220445]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4900
dma_caviar
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW


Ты сначала объясни ТСу, что такое нарастающий итог, а потом его уже пугай такими конструкциями
1 окт 15, 14:50    [18221021]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
denis111111
Member

Откуда:
Сообщений: 165
Сделал по анологии как здесь
1 окт 15, 15:16    [18221213]     Ответить | Цитировать Сообщить модератору
 Re: Количество всех пользователей по месяцам  [new]
yaxta
Member

Откуда: азербайджан,баку
Сообщений: 518
Glory
denis111111
Glory,
пропущено...

И из этого нужно понять, зачем после COUNT(*) делать еще и "суммирование" ?

+1 ---согласен

думую автора нужна ето
SELECT 
  SUM(CASE datepart(month,ARR_DATE) WHEN 1 THEN 1 ELSE 0 END) AS 'January',
  SUM(CASE datepart(month,ARR_DATE) WHEN 2 THEN 1 ELSE 0 END) AS 'February',
  SUM(CASE datepart(month,ARR_DATE) WHEN 3 THEN 1 ELSE 0 END) AS 'March',
  SUM(CASE datepart(month,ARR_DATE) WHEN 4 THEN 1 ELSE 0 END) AS 'April',
  SUM(CASE datepart(month,ARR_DATE) WHEN 5 THEN 1 ELSE 0 END) AS 'May',
  SUM(CASE datepart(month,ARR_DATE) WHEN 6 THEN 1 ELSE 0 END) AS 'June',
  SUM(CASE datepart(month,ARR_DATE) WHEN 7 THEN 1 ELSE 0 END) AS 'July',
  SUM(CASE datepart(month,ARR_DATE) WHEN 8 THEN 1 ELSE 0 END) AS 'August',
  SUM(CASE datepart(month,ARR_DATE) WHEN 9 THEN 1 ELSE 0 END) AS 'September',
  SUM(CASE datepart(month,ARR_DATE) WHEN 10 THEN 1 ELSE 0 END) AS 'October',
  SUM(CASE datepart(month,ARR_DATE) WHEN 11 THEN 1 ELSE 0 END) AS 'November',
  SUM(CASE datepart(month,ARR_DATE) WHEN 12 THEN 1 ELSE 0 END) AS 'December',
  SUM(CASE datepart(year,ARR_DATE) WHEN 2015 THEN 1 ELSE 0 END) AS 'TOTAL'
FROM
    your_table
---------если нужно сортировка по годом
WHERE
  ARR_DATE BETWEEN '2015/01/01' AND '2015/12/31' 
1 окт 15, 21:17    [18223298]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить