Проблема с разделом в SQL

У меня есть таблица отгрузки заказов, как показано ниже:

Номер заказа shipping_id pkg_weight 1 101 5 1 101 5 1 101 5 1 102 3 1 102 3

Я хочу, чтобы выходная таблица выглядела так:

Номер заказа Distinct_shipment_id total_pkg_weight 1 2 8
select 
   order_id
 , count(distinct(shipment_id)
 , avg(pkg_weight) over (partition by shipment_id)
 
from table1
group by  order_id

но получая следующую ошибку -

столбец "pkg_weight" должен присутствовать в предложении GROUP BY или использоваться в агрегатная функция

Пожалуйста помоги

Какие rdbms (oracle, sql server, mysql) вы используете?

Salman A 09.02.2023 13:55

Что означает 8 как total_pkg_weight? Я бы сказал, что общий вес 21.

jarlh 09.02.2023 14:08
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
2
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала используйте отдельный выбор, а затем агрегируйте:

SELECT Order_ID,
       COUNT(DISTINCT shipment_id) AS Distinct_shipment_id,
       SUM(pkg_weight) AS total_pkg_weight
FROM
(
    SELECT DISTINCT Order_ID, shipment_id, pkg_weight
    FROM table1
) t
GROUP BY Order_ID;

Другие вопросы по теме