Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL запрос подсчитать данные за месяц, за год / 13 сообщений из 13, страница 1 из 1
01.06.2020, 11:31
    #39964950
Oleg20141996
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
Есть таблица [Товары], в ней есть поле [Дата] надо посчитать количество записей за определенный отрезок времени допусти это месяц


Код: plaintext
1.
2.
3.
4.
5.
[IDТовар]    [Дата]
           . . .
    5        01.01.2020
    6        01.02.2020
    7        02.03.2020
    8        27.12.2019

-------------------------
Желаемый результат
Код: plaintext
1.
2.
3.
[Месяц]     [Кол-во]
Январь            2
Февраль          1
Март               0

----------------------
Код: plaintext
1.
2.
3.
другая таблица
[Год]      [Кол-во]
2020            3
2019            1
. . .
-------------------------------------------------------------
делал так но все выводит в отдельные столбцы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT        COUNT(*) AS c2021,
                             (SELECT        COUNT(*) AS Expr1
                               FROM            dbo.[Программное обеспечение]
                               WHERE        (YEAR(Дата_установки) = 2019)) AS c2019,
                             (SELECT        COUNT(*) AS Expr1
                               FROM            dbo.[Программное обеспечение] AS [Программное обеспечение_2]
                               WHERE        (YEAR(Дата_установки) = 2018)) AS c2018,
FROM            dbo.[Программное обеспечение] AS [Программное обеспечение_1]
WHERE        (YEAR(Дата_установки) = 2021)


-----------------------------------------------------------
...
Рейтинг: 0 / 0
01.06.2020, 11:37
    #39964952
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
Oleg20141996

------------------------- ----------------------
Желаемый результат другая таблица
[Месяц] [Кол-во] [Год] [Кол-во]
Январь 2 2020 3
Февраль 1 2019 1
Март 0
. . .



Код: sql
1.
2.
3.
4.
SELECT DISTINCT * FROM 
(
    SELECT COUNT(*) OVER (PARTITION BY YEAR(Дата), Month(Дата)), Month(Дата), COUNT(*) OVER (PARTITION BY YEAR(Дата)), YEAR(Дата) FROM T
) T
...
Рейтинг: 0 / 0
01.06.2020, 11:54
    #39964963
Oleg20141996
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
Спасибо, но не понял
...
Рейтинг: 0 / 0
01.06.2020, 12:07
    #39964967
londinium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
автор[IDТовар] [Дата]
. . .
5 01.01.2020
6 01.02.2020
7 02.03.2020
8 27.12.2019


-------------------------
Желаемый результат

[Месяц] [Кол-во]
Январь 2
Февраль 1
Март 0

почему в январе 2020 года 2 записи, а в марте - 0 ?


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
use tempdb
GO
WITH CTE AS
(
  SELECT 5 AS ID,'20200101'AS DD
   UNION ALL
  SELECT 6,'20200201'
   UNION ALL
  SELECT 7,'20200302'
   UNION ALL
  SELECT 8,'20191227'
)
SELECT YEAR(C.DD)AS YY,MONTH(C.DD)AS MM,COUNT(ID)AS CNT
FROM CTE AS C
GROUP BY ROLLUP (YEAR(C.DD), MONTH(C.DD))
...
Рейтинг: 0 / 0
01.06.2020, 14:26
    #39965023
Fox Malder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
Oleg20141996,

почитайте "оконные функции", Вам очень поможет при дальнейших аналитических запросах
...
Рейтинг: 0 / 0
01.06.2020, 15:11
    #39965053
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
Я или не понял таска, либо чего-то в этой жизни - обычный запрос c "count ... group by" уже не принято писать без оконных ф-ий и CTE?
...
Рейтинг: 0 / 0
01.06.2020, 19:05
    #39965123
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
fkthat
Я или не понял таска, либо чего-то в этой жизни - обычный запрос c "count ... group by" уже не принято писать без оконных ф-ий и CTE?


Одна оконная функция будет нужна для года
...
Рейтинг: 0 / 0
01.06.2020, 19:32
    #39965135
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
a_voronin
fkthat
Я или не понял таска, либо чего-то в этой жизни - обычный запрос c "count ... group by" уже не принято писать без оконных ф-ий и CTE?


Одна оконная функция будет нужна для года

Все равно не пойму
Разве вот такое не выведет по месяцам:

Код: sql
1.
2.
3.
4.
select month([Дата]) m, count(*) count
from [Товары]
group by month([Дата])
order by 1


А такое по годам:

Код: sql
1.
2.
3.
4.
select year([Дата]) y, count(*) count
from [Товары]
group by year([Дата])
order by 1



не?
...
Рейтинг: 0 / 0
02.06.2020, 06:47
    #39965217
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
fkthat
a_voronin
пропущено...

Одна оконная функция будет нужна для года

Все равно не пойму
Разве вот такое не выведет по месяцам:

Код: sql
1.
2.
3.
4.
select month([Дата]) m, count(*) count
from [Товары]
group by month([Дата])
order by 1

Выведет, но когда в интервале будет больше одного года, то все январи будут просуммированы в одну строку, все феврали - тоже, ну и т.д.
...
Рейтинг: 0 / 0
02.06.2020, 07:14
    #39965222
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
Ennor Tiegael
Выведет, но когда в интервале будет больше одного года, то все январи будут просуммированы в одну строку, все феврали - тоже, ну и т.д.
ТС так сформурировал вопрос, что, кажется, это и нужно - вывести продажи за все январи, феврали и т.д.
У него даже в резалтсете только одно поле - номер месяца (ну, кроме агрегата).
...
Рейтинг: 0 / 0
02.06.2020, 09:28
    #39965234
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
Ennor Tiegael
Выведет, но когда в интервале будет больше одного года, то все январи будут просуммированы в одну строку, все феврали - тоже, ну и т.д.

Мне показалось, что ты этого и хочешь. Но если ты этого-таки не хочешь, то:
Код: sql
1.
2.
3.
4.
select year([Дата]) y, month([Дата]) m, count(*) count
from [Товары]
group by year([Дата]), month([Дата])
order by 1,2
...
Рейтинг: 0 / 0
02.06.2020, 09:48
    #39965242
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
fkthat,

Я - точно не хочу
...
Рейтинг: 0 / 0
02.06.2020, 10:07
    #39965247
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL запрос подсчитать данные за месяц, за год
Ennor Tiegael
fkthat,

Я - точно не хочу

Пардон, перепутал с автором :)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL запрос подсчитать данные за месяц, за год / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]