Справка по запросу PostgreSQL (Структура и синтаксис)

#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. С удовольствием и не стесняйтесь отмечать ответ 😉