SQL объединяет выходные дни в один итог - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь объединить даты выходных, используя имя даты.

ТАБЛИЦА

  • ДАТА
  • 11/25/2018
  • 11 /24/2018
  • 11/25/2018

Поэтому я использую DATENAME и конвертирую даты в день недели.

  • DATE
  • Воскресенье
  • Суббота
  • Воскресенье

Тогда я могу сосчитать их, чтобы они выглядели так:

  • ДАТА,COUNT
  • Воскресенье.2
  • Суббота.1

Но я не уверен, как их сгруппировать, чтобы это выглядело как

  • DATE.COUNT
  • WEEKEND.3

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018

Чтобы получить общее количество выходных дней

SELECT COUNT(*) as totalweekdays FROM tablename 
WHERE 
DATENAME(weekday, datecolumn) = 'Saturday'   
OR
DATENAME(weekday, datecolumn) = 'Sunday'   
0 голосов
/ 23 ноября 2018

Вы должны сгруппировать по имени (дня недели,), чтобы получить необходимый вывод.

create table t(date_of_hire date);

insert into t values('2018-11-25');
insert into t values('2018-11-24');
insert into t values('2018-11-25');

select datename(weekday,date_of_hire) as day_of_week,count(*) as cnt
  from t
  group by datename(weekday,date_of_hire)
0 голосов
/ 23 ноября 2018

Вот несколько способов сделать это.Вы заметите версию COUNT, которую вы должны вернуть NULL, чтобы функция COUNT() не учитывала ее.Вы также можете использовать SUM().Есть и другие способы сделать это.

DECLARE @x TABLE (mydate DATE);

INSERT INTO @x SELECT '11-25-2018'; --Sunday
INSERT INTO @x SELECT '11-24-2018'; --Saturday
INSERT INTO @x SELECT '11-25-2018'; --Sunday
INSERT INTO @x SELECT '11-23-2018'; --Friday

SELECT count(CASE WHEN DATEPART(dw, mydate) BETWEEN 2 and 6 THEN NULL ELSE 1 END ) AS CountOfWeekendDays
    ,sum(CASE WHEN DATEPART(dw, mydate) BETWEEN 2 and 6 THEN 1 ELSE 0 END) AS SumOfWeekDays
    ,sum(CASE WHEN DATEPART(dw, mydate) BETWEEN 2 and 6 THEN 0 ELSE 1 END) AS SumOfWeekendDays
FROM @x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...