У меня есть таблица:выбрать одну строку на данных с агрегатными функциями
price
---------------------
id | int (PK)
unit_price | number
part_id | int (FK)
line | int
С уникальным ограничением на part_id
и line
(так детали могут иметь несколько цен, дифференцированные по «линии»)
К визуализировать:
id | unit_price | part_id | line
--------------------------------
1 | 100.00 | 1 | 1
2 | 150.00 | 1 | 2
3 | 90.00 | 1 | 3
--------------------------------
4 | 75.00 | 2 | 1
5 | 70.00 | 2 | 2
--------------------------------
6 | 90.00 | 3 | 1
7 | 95.00 | 3 | 2
Мне нужно написать запрос, который будет принимать низкой «линии» для каждого часть и показать цену, поэтому выход будет так:
id | unit_price | part_id | line
--------------------------------
1 | 100.00 | 1 | 1
4 | 75.00 | 2 | 1
6 | 90.00 | 3 | 1
Я начал с этим запросом:
SELECT min(line), unit_price, part_id
FROM price
GROUP BY ... ?
Но я быстро понял, что если я добавить unit_price
и part_id
к статье GROUP BY
, то это в основном даст мне исходный результат (все), потому что каждый unit_price
уникален. Но я не могу GROUP BY part_id
сам по себе, потому что unit_price
должен быть включен в предложение GROUP BY
.
Должен ли я использовать агрегат min
функции для выбора только один номер на part_id
? Я думаю, что я мог бы лаять неправильное дерево с GROUP BY
. Я только представляю это в вопросе, чтобы показать вещи, которые я пробовал.
В моем наборе данных не все цены гарантированны, начиная с '1', поэтому условие = 1
не будет работать. Мне нужен минимум. Кроме того, я использую MySQL, но я думаю, что, возможно, это не имеет значения.