SQL - извлечение отдельной строки на основе максимального значения - PullRequest
1 голос
/ 01 октября 2019

Я пытаюсь получить самую последнюю сумму продажи для каждого продавца. Продавцы совершали продажу за несколько дней, я хочу только самую последнюю.

Моя попытка ниже:

SELECT salesperson, amount
FROM table
WHERE date = (SELECT MAX(date) FROM table);

Ответы [ 2 ]

2 голосов
/ 01 октября 2019

Использовать коррелированный подзапрос:

SELECT t.salesperson, t.amount
FROM table t
WHERE t.date = (SELECT MAX(t1.date) 
                FROM table t1 
                WHERE t1.salesperson = t.salesperson -- for each salesperson
               );
0 голосов
/ 01 октября 2019

Если вы используете PostgreSQL, вы можете воспользоваться DISTINCT ON:

SELECT DISTINCT ON (salesperson) salesperson, amount
FROM table t
ORDER BY salesperson, date DESC

Это вернет только одну строку для каждого продавца. В предложении ORDER BY указано, что нужно вернуть тот, у кого самая большая дата для этого продавца.

К сожалению, DISTINCT ON не поддерживается другими базами данных.

...