У меня есть следующие таблицы: costs
Как вернуть все строки с значением MAX, удовлетворяющим условию другого поля в SQL?
+--------+------+-----------+
| Year | ID | Amount |
+--------+------+-----------+
| 1960 | 1 | 100 |
| 1960 | 2 | 200 |
| 1960 | 3 | 200 |
| 1960 | 4 | 150 |
| 1961 | 1 | 300 |
| 1961 | 2 | 200 |
| 1961 | 3 | 100 |
| 1961 | 4 | 300 |
+---------+------+----------+
Я хочу все идентификаторы, имеющие MAX Суммы по годам. К примеру, за 1960, я хочу, строки с идентификаторами 2 и 3. За 1961 год я хочу строки с идентификаторами 1 и 4.
SELECT Year, ID, Amount FROM costs WHERE Amount = (SELECT MAX(Amount) FROM costs);
выше получает меня все максимальные значения за все годы. Но я хочу условие, которое дает мне максимальное количество значений в год. Как добавить условие только для выбора записей с Year = 1960?
Что DB платформы? – OldProgrammer
localhost using phpMyAdmin – user2140857
Я только проверил два из нижеприведенных ответов, и оба работали нормально. Не уверен, какое из представленных решений будет выполняться быстрее. Помимо секундомера, у меня нет инструментов для заметок и т. Д. Скорость для меня не проблема. Это всего лишь одно время, которое может быть сделано раз в месяц. – user2140857