#sql #postgresql
Вопрос:
Задача: Для каждого дня и рынка в сентябре 2020 года: (1)Сколько назначений было выполнено? (2)Сколько часов было потрачено на месте? (3)Сколько маршрутов было использовано для завершения этих встреч? ПРИМЕЧАНИЕ: Все три вопроса должны быть выполнены в одном запросе.
CREATE TABLE appointments (
"id" INTEGER,
"date" TIMESTAMP,
"market" VARCHAR(20),
"count_appointments" INTEGER,
"total_onsite_hours" DECIMAL
);
INSERT INTO appointments
("id", "date", "market", "count_appointments", "total_onsite_hours")
VALUES
Текущий код запроса:
Select
COUNT(count_appointments)As Appointments, market, date
FROM appointments
WHERE date>='2020-09-01' AND date <='2020-09-30'
GROUP by market,date
Order by market,date,appointments DESC
Мне удалось решить первую часть задачи, но я борюсь с частью (2), чтобы написать запрос в течение нескольких часов, проведенных на месте. Кроме того, информация о третьем разделе (3) «маршруты» включена в другую таблицу, поэтому может потребоваться какое-то «объединение»?
Для контекста я работаю с PostgreSQL, и две таблицы собраны в одной базе данных.
Любая помощь/понимание было бы здорово!
Спасибо.
Ответ №1:
В вашем результате за 1 квартал есть ошибка. Проверьте эту страницу: https://www.w3schools.com/sql/sql_count_avg_sum.asp и обратите внимание на разницу между СУММОЙ и КОЛИЧЕСТВОМ — это поможет с вопросами 1-2.
Для вопроса 3 перейдите в учебнике в раздел СОЕДИНЕНИЯ: https://www.w3schools.com/sql/sql_join.asp и, при условии, что вы понимаете основы реляционных баз данных, это даст вам то, что вам нужно.
Вы также можете извлечь выгоду из понимания подзапросов. С достаточно хорошим описанием можно ознакомиться здесь: https://careerkarma.com/blog/sql-subquery
Комментарии:
1. Благодарим вас за то, что нашли время дать своевременный ответ на конкретный запрос. Ссылки, которые вы предоставили, помогли мне решить вопрос 3 (ПРИСОЕДИНЕНИЕ).
2. С удовольствием и не стесняйтесь отмечать ответ 😉