Пытаюсь найти sql-запрос для нахождения максимального значения суммы

#mysql #sql

#mysql #sql

Вопрос:

В таблице правонарушений содержится информация о совершенных преступлениях. Я пытаюсь выяснить, в каком финансовом квартале (1,2,3,4) было совершено наибольшее количество преступлений.

 SELECT financialquarter_ID, SUM(numberOfOffences) FROM offences WHERE financialquarter_ID = 1;
  

этот запрос выдает 4160

 SELECT financialquarter_ID, SUM(numberOfOffences) FROM offences WHERE financialquarter_ID = 2;
  

Этот запрос выдает 4227

 SELECT financialquarter_ID, SUM(numberOfOffences) FROM offences WHERE financialquarter_ID = 3;
  

Этот запрос выдает 4647

 SELECT financialquarter_ID, SUM(numberOfOffences) FROM offences WHERE financialquarter_ID = 4;
  

Этот запрос выдает 4665

Итак, мы видим, что в 4 квартале наибольшее количество преступлений. Я пытаюсь получить запрос для вывода идентификатора этого financialquarter_ID (квартал 4).

До сих пор я безуспешно пытался выполнить следующий запрос.

 select yt.financialquarter_ID, yt.numberOfOffences
From offences yt
where numberOfOffences = 
(select max(numberOfOffences) from offences st where yt.financialquarter_ID = st.financialquarter_ID)
GROUP by numberOfOffences DESC
LIMIT 1 
  

Вот таблица.
Это моя таблица правонарушений

Ответ №1:

Используйте group by и limit :

 SELECT financialquarter_ID, SUM(numberOfOffences)
FROM offences
GROUP BY financialquarter_ID
ORDER BY SUM(numberOfOffences) DESC
LIMIT 1;
  

Примечание: в случае связей это возвращает только одну строку.

Ответ №2:

это будет работать:

 SELECT financialquarter_ID, SUM(numberOfOffences) FROM offences group by 
financialquarter_ID
having SUM(numberOfOffences)=(SELECT count(*) FROM offences group by 
financialquarter_ID order by 
count(*) desc limit 1
);