JackShcherbakov
@JackShcherbakov

Как правильно составить SQL запрос?

Здравствуйте, коллеги! Недавно столкнулся со следующей проблемой:

Есть таблица с заказами:
+---------+------------+--------+------------+
| OrderID | CustomerID | Amount | Date       |
+---------+------------+--------+------------+
|       1 |          3 |  69.98 | 2007-04-02 |
|       2 |          1 |  49.99 | 2007-04-15 |
|       3 |          2 |  74.98 | 2007-04-19 |
|       4 |          3 |  24.99 | 2007-05-01 |
|       5 |          2 |  43.87 | 2018-03-10 |
|       6 |          2 |   2.56 | 2014-05-02 |
|       7 |          2 |  69.38 | 2017-04-02 |
|       8 |          3 |  22.29 | 2013-02-21 |
|      11 |          4 |  22.28 | 2053-02-21 |
|      12 |          3 |  22.23 | 2013-02-21 |
|      13 |          3 |  22.23 | 2013-02-21 |
|      15 |          3 |  22.21 | 2013-02-21 |
|      16 |          2 |  12.21 | 2015-02-21 |
|      17 |          2 |  11.11 | 2016-02-12 |
|      18 |          2 |  11.12 | 2016-02-12 |
|      19 |          2 |  11.16 | 2016-02-12 |
+---------+------------+--------+------------+

Я хочу узнать ID заказа с наибольшей суммой. Делаю вот такой запрос:
SELECT OrderId, MAX(Amount) FROM Orders GROUP BY OrderId HAVING MAX(Amount) =  MAX(Amount);
+---------+-------------+
| OrderId | MAX(Amount) |
+---------+-------------+
|       1 |       69.98 |
|       2 |       49.99 |
|       3 |       74.98 |
|       4 |       24.99 |
|       5 |       43.87 |
|       6 |        2.56 |
|       7 |       69.38 |
|       8 |       22.29 |
|      11 |       22.28 |
|      12 |       22.23 |
|      13 |       22.23 |
|      15 |       22.21 |
|      16 |       12.21 |
|      17 |       11.11 |
|      18 |       11.12 |
|      19 |       11.16 |
+---------+-------------+
16 rows in set (0.00 sec)

Но ответ меня не устраивает. Я хочу что бы был такой вывод:
+---------+-------------+
| OrderId | MAX(Amount) |
|       3 |       74.98 |
+---------+-------------+

Как составить такой запрос?

Заранее выражаю огромную благодарность всем, кто поможет
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 1
LaRN
@LaRN
Senior Developer
Можно так попробовать:
SELECT OrderId, MAX(Amount) AS Amn
FROM Orders
GROUP BY OrderId
ORDER BY Ann DESC
LIMIT 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы