SQL объединяет выходные дни в одно общее

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

ТАБЛИЦА

  • ДАТА
  • 25.11.2018
  • 24.11.2018
  • 25.11.2018

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

  • ДАТА
  • Воскресенье
  • Суббота
  • Воскресенье

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

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

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

  • ДАТА . СЧИТАТЬ
  • ВЫХОДНЫЕ ДНИ . 3

Вероятно, лучше всего выбрать, где вы собираете все даты, где ДАТА == 'Воскресенье' ИЛИ ​​ДАТА == 'Суббота', а затем просто суммируете это и выводите в виде таблицы с одной записью

Shane Tyler Malachow 23.11.2018 18:27

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

Tony Dong 23.11.2018 18:27
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
442
3

Ответы 3

Вот несколько способов сделать это. Вы заметите, что для версии 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

Что это у нас есть SET DATEFIRST 1 -- MONDAY? 2 и 6 затем необходимо заменить на 6 и 7.

Salman A 23.11.2018 21:46

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

SELECT COUNT(*) as totalweekdays FROM tablename 
WHERE 
DATENAME(weekday, datecolumn) = 'Saturday'   
OR
DATENAME(weekday, datecolumn) = 'Sunday'   

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

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)

Другие вопросы по теме