У меня есть таблица продукт как этотПолучить сумму умножения двух столбцов двух таблиц
PRODUCT_ID PACK_SIZE PACK_PRIZE
3000 5 2.5
3001 5 2.5
3002 5 2.5
3003 5 2.5
таблице Order
order_id client_id
75001 1024
75002 1033
75003 1030
ПУНКТЫ Таблица
ORDER_ID PRODUCT_ID NUMBER_ORDERED
75001 3936 2
75001 3557 5
75001 3012 3
75001 3236 4
Client Таблица
CLIENT_ID LAST_NAME STATUS
1021 Smith private
1022 Williams corporate
1023 Browne private
1024 Tinsell corporate
Это примеры данных, которые я только что добавил, чтобы показать данные образца. Здесь я хочу выбрать лучших 5 клиентов, которые имеют наибольшую общую сумму заказов.
Я хочу выбрать клиентов, чей статус является корпоративным и у кого наибольшее количество заказов.
Другими словами, я хочу выбрать client_id клиентов, имеющих более высокую общую сумму заказа.
Здесь я пытаюсь достичь этого вот так.
WITH CTE as (SELECT ORDERS.ORDER_ID, PRODUCTS.PACK_PRIZE, PRODUCTS.PACK_SIZE, ITEMS.NUMBER_ORDERED,
CLIENTS.STATUS,CLIENTS.CLIENT_ID,CLIENTS.FIRST_NAME,CLIENTS.LAST_NAME
FROM ORDERS INNER JOIN
ITEMS
ON ORDERS.ORDER_ID = ITEMS.ORDER_ID INNER JOIN
PRODUCTS
ON ITEMS.PRODUCT_ID = PRODUCTS.PRODUCT_ID
INNER JOIN
CLIENTS
ON ORDERS.CLIENT_ID = CLIENTS.CLIENT_ID
WHERE CLIENTS.STATUS='corporate')
SELECT CLIENT_ID,FIRST_NAME,LAST_NAME,ORDER_ID,((PACK_PRIZE/PACK_SIZE) * NUMBER_ORDERED)AS Total
FROM (SELECT CTE.*
FROM CTE
ORDER BY SUM(PACK_PRIZE/PACK_SIZE) * NUMBER_ORDERED DESC
) t
WHERE rownum <= 5;
Но здесь я получаю наивысшие заказы, поэтому заказы от одного и того же клиента тоже входят в это.
Я хочу выбрать лучших 5 клиентов, у которых самая высокая общая сумма заказа.
Все клиенты, которые являются корпоративными, должны быть выбраны. Тогда общая сумма всех заказов каждого клиента должна быть рассчитана , и я хочу выбрать клиентов с самыми высокими 10 значениями. Я использую oracle 11g.
Ваше отношение слишком переполнено ... вы должны взглянуть на предложение GROUP BY. Базируясь на всех таблицах на своих идентификаторах, используйте функцию SUM вместе с GROUP BY и закажите ее. И затем выберите число, которое вы хотите. – Kousalik