Сумма определенных столбцов в SQL

У меня есть данные об аренде велосипедов, и я сгруппировал их по количеству использований в день, используя следующий код в postgresql:

    SELECT date_trunc('day', rental_date) FROM rentalinfo;

SELECT COUNT(date_trunc('day', rental_date)) as counted_leads,
     date_trunc('day', rental_date) as count_date
FROM rentalinfo
GROUP BY date_trunc('day', rental_date)
ORDER BY date_trunc('day', rental_date) ASC;

результат дает столбец под названием counted_leads, который содержит количество прокатов в день. Я хочу сделать запрос, в котором я могу извлечь и суммировать количество арендованных автомобилей в выходные и будние дни отдельно. Я пробовал в будние дни:

SELECT SUM(counted_leads) AS sum_date WHERE count_date NOT IN ('2021-12-04',..)

но я получаю сообщение об ошибке «ОШИБКА: синтаксическая ошибка в или рядом с «ВЫБРАТЬ».

Как я могу это исправить, пожалуйста?

Почти невозможно предоставить подробную справку, не зная ваших входных данных, структуры таблицы и ожидаемого результата. Последний запрос, который вы упомянули, неверен из-за отсутствия FROM.

Jonas Metzler 14.05.2022 17:47

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

Jonas Metzler 14.05.2022 17:53

Где твой пункт from?

Salman A 14.05.2022 19:37
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте extract(dow ...) в предложении where, чтобы отфильтровать все строки рабочих дней (или выходных) и подсчитать их:

select count(*) as weekdays
from rentalinfo
where extract(dow from rental_date) in (1, 2, 3, 4, 5)

Или используйте условную агрегацию:

select count(case when extract(dow from rental_date) in (1, 2, 3, 4, 5) then 1 end) as weekdays
     , count(case when extract(dow from rental_date) in (0, 6) then 1 end) as weekends
from rentalinfo

разве не должно быть 2,3,4,5,6 для будней и 1,7 для выходных? Спасибо.

jin 14.05.2022 20:49
postgresql.org/docs/current/… говорит, что dow возвращает воскресенье = 0, а суббота = 6. Я думаю, что isodow использует от 1 до 7.
Salman A 14.05.2022 21:14

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