Как преобразовать запрос во вложенный запрос - PullRequest
0 голосов
/ 30 сентября 2019

Как мне изменить этот запрос на вложенный запрос? Запрос и таблицы перечислены ниже.

SELECT 
  Nation.N_NAME as "nation", 
  ROUND(
    SUM(
      Lineitem.L_QUANTITY * (Lineitem.L_EXTENDEDPRICE - Lineitem.L_DISCOUNT)
    ), 2
  ) AS "order size"
FROM Nation
JOIN Supplier ON Nation.N_NATIONKEY = Supplier.S_NATIONKEY
JOIN Customer ON Supplier.S_NATIONKEY = Customer.C_NATIONKEY
JOIN Orders ON Customer.C_CUSTKEY = Orders.O_CUSTKEY
JOIN Lineitem ON Orders.O_ORDERKEY = Lineitem.L_ORDERKEY
WHERE Lineitem.L_SUPPKEY = Supplier.S_SUPPKEY
GROUP BY Nation.N_NAME
;

таблицы представлены следующим образом

Нация: N_NATIONKEY, N_NAME

Поставщик: S_SUPPKEY, S_NAME, S_NATIONKEY

Заказчик: C_CUSTKEY, C_NAME, C_NATIONKEY

Заказы: O_ORDERKEY, O_CUSTKEY

Линия: L_ORDERKEY, L_SUPPKEY, L_QUANTITY, L_EXTENDEDPRICE, L_DISCOUNT * 1014

1 Ответ

0 голосов
/ 30 сентября 2019

Я не уверен, какой именно nested join вы ищете, но вот один из вариантов:

SELECT
  src.N_NAME as "nation", 
  ROUND(
    SUM(
      lineitem.L_QUANTITY * (lineitem.L_EXTENDEDPRICE - lineitem.L_DISCOUNT)
    ), 2
  ) AS "order size"
FROM lineitem -- Get line items
INNER JOIN (
  SELECT nation.N_NAME, supplier.S_SUPPKEY, Orders.O_ORDERKEY
  FROM nation
  JOIN Supplier ON Nation.N_NATIONKEY = Supplier.S_NATIONKEY
  JOIN Customer ON Supplier.S_NATIONKEY = Customer.C_NATIONKEY
  JOIN Orders ON Customer.C_CUSTKEY = Orders.O_CUSTKEY
) src ON lineitem.L_SUPPKEY = src.S_SUPPKEY AND lineitem.L_ORDERKEY = src.O_ORDERKEY
GROUP BY src.N_NAME

Я не проверял его, но попробуйте и посмотрите,оно работает. Если это не дает того, что вы хотите, опубликуйте несколько примеров данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...