#sql
#sql
Вопрос:
Я столкнулся со следующим SQL-запросом.
Мой результирующий набор теперь:
| Id | Customer | Sales |
| 1 | 1 | 10 |
| 2 | 1 | 20 |
| 3 | 2 | 30 |
| 4 | 2 | 40 |
Что я хотел бы сделать, так это добавить дополнительный столбец, который показывает наименьшую продажу для этого клиента:
| Id | Customer | Sales | SmallestSale |
| 1 | 1 | 10 | 10 |
| 2 | 1 | 20 | 10 |
| 3 | 2 | 30 | 30 |
| 4 | 2 | 40 | 30 |
Поскольку запрос select для получения этих трех столбцов теперь довольно сложный, я бы хотел избежать подзапросов.
Есть идеи?
Мика
Ответ №1:
Предполагая, что ваша СУБД поддерживает оконные агрегаты
SELECT Id,
Customer,
Sales,
MIN(Sales) OVER (PARTITION BY Customer) AS SmallestSale
FROM YourTable
Ответ №2:
select s.Id, s.Customer, s.Sales, sm.SmallestSale
from Sales s
inner join (
select Customer, min(sales) as SmallestSale
from Sales
group by Customer
) sm on s.Customer = sm.Customer