У меня есть 4 таблицы:
- Customer (CustomerID (PK), FirstName, LastName)
- Order (OrderID (PK), CustomerID (FK))
- Покупка (OrderID (FK), GameID (FK), Количество)
- Игры (GameID (PK), RetailPrice)
Я хотел бы перечислить имена всех клиентов чьи заказы составляют более $ 150.
То, что у меня было, работает:
SELECT
"p"."OrderID", SUM("p"."Quantity" * "g"."RetailPrice") "TotalPrice"
FROM
"Purchase" "p"
JOIN
"Games" "g" ON ("p"."GameID" = "g"."GameID")
GROUP BY
"p"."OrderID"
HAVING
SUM("p"."Quantity" * "g"."RetailPrice") >= 150
Я попытался объединить таблицы клиентов и заказов, что работает, но как только я пытаюсь выбрать имя и фамилию столбцы, это не работает; Я получаю сообщение об ошибке
Не в агрегатной функции или группе по предложению
SELECT
"c"."FirstName", "c"."LastName",
"p"."OrderID", SUM("p"."Quantity" * "g"."RetailPrice") "TotalPrice"
FROM
"Customer" "c"
JOIN
"Order" "o" ON "c"."CustomerID" = "o"."CustomerID"
JOIN
"Purchase" "p" ON "o"."OrderID" = "p"."OrderID"
JOIN
"Games" "g" ON ("p"."GameID" = "g"."GameID")
GROUP BY
"p"."OrderID"
HAVING
SUM("p"."Quantity" * "g"."RetailPrice") >= 150
Ни одно из объяснений, которые я видел в Интернете относительно агрегатных функций и объединяющихся таблиц, не имеет было достаточно, чтобы я понял, что мне нужно сделать, чтобы сделать эту работу. Каков правильный запрос для этого и почему это правильный запрос?