Я пытаюсь вернуть количество заказов на аренду в каждом магазине, выполненных в месяц. Я хочу показать четыре столбца; месяц, год, идентификатор магазина, COUNT прокатов (в месяц). Я могу вернуть месяц, год и сохранить столбцы идентификаторов, но COUNT аренды не СЧИТАЕТСЯ по месяцам:
SELECT
DATE_PART('month', r.rental_date) Rental_month,
DATE_PART('year', r.rental_date) Rental_year,
s.store_id,
COUNT(r.rental_date) count_rentals
FROM store s
JOIN staff staf
ON s.store_id = staf.store_id
JOIN payment pay
ON staf.staff_id = pay.staff_id
JOIN rental r
ON pay.rental_id = r.rental_id
GROUP BY r.rental_date, s.store_id
My output: Мой вывод
My desired output would look like this: желаемый результат
Вам нужно фактически сгруппировать по месяцу и году, а не по полной дате. Измените свою группу GROUP BY на -
GROUP BY
DATE_PART('month', r.rental_date),
DATE_PART('year', r.rental_date),
s.store_id,
Вместо использования date_part()
я бы рекомендовал date_trunc()
:
SELECT DATE_TRUNC('month', r.rental_date) as yyyymm,
st.store_id,
COUNT(*) as count_rentals
FROM staff st JOIN
payment p
ON st.staff_id = p.staff_id JOIN
rental r
ON p.rental_id = r.rental_id
GROUP BY yyyymm, st.store_id;
Примечания:
store
не нужен в запросе. store_id
хранится в таблице staff
.date_trunc()
создает столбец даты в первый день месяца.
1x
date_drunc()
>>> 2xdate_part()
во всех отношениях.