Использование count, sum и group by в запросе sql - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь написать запрос, который показывает количество заказов и количество товаров, которые каждый покупатель купил в этих заказах

SELECT customers.customer_id, COUNT(orders.order_id),  
SUM(order_details.order_qty)
FROM customers
LEFT OUTER JOIN orders 
ON orders.customer_id=customers.customer_id
LEFT OUTER JOIN order_details 
ON order_details.order_id=orders.order_id
GROUP BY customers.customer_id;

У меня есть три таблицы для объединения, как вы можете видеть вЯ уже писал ... проблема в том, что результаты моего запроса неверны

enter image description here

customer_id: 1 должно иметь 3 заказа и количествоэлементы в этих порядках должны быть 5

Вот еще одно изображение ниже, чтобы показать, что содержат другие таблицы:

Я использую базу данных Oracle версии 12.2.0.1.0

Order_details: enter image description here

заказы: enter image description here

клиенты: enter image description here

1 Ответ

0 голосов
/ 11 октября 2018

проблема в том, что результаты моего запроса неверны

Возможно, в ваших заказах более одной записи.Поэтому, просто присоединяясь к ним, вы создадите Продукт на основе количества записей сведений.

Что вы можете сделать, это использовать встроенное представление для агрегирования qty для идентификатора заказа;

SELECT customers.customer_id
       , COUNT(orders.order_id)
       , SUM(order_details.tot_qty)
FROM customers
LEFT OUTER JOIN orders 
ON orders.customer_id=customers.customer_id
LEFT OUTER JOIN (select order_id, SUM(order_qty) as tot_qty 
                 from order_details 
                 group by order_id) order_details
ON order_details.order_id=orders.order_id
GROUP BY customers.customer_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...