Как упростить запрос? Научите плиз)

Вывести фамилию, номер машины и нарушение только для тех водителей, которые на одной машине нарушили одно и то же правило два и более раз. При этом учитывать все нарушения, независимо от того оплачены они или нет. Информацию отсортировать в алфавитном порядке, сначала по фамилии водителя, потом по номеру машины и, наконец, по нарушению. Таблица - http://prntscr.com/10ofgys

select distinct name, number_plate, violation from fine
where number_plate in (
select number_plate from (
select number_plate, violation,
count(number_plate), count(violation) 
from fine 
as mt group by mt.number_plate, violation
having count(number_plate) > 1) as t)
order by name, number_plate, violation

Запрос рабочий, но мне хочется понять как это записать более изящно что-ли. Есть варианты?


Ответы (1 шт):

Автор решения: Daniil Loban

Если я все правильно понял, все данные уже есть в первой группировке, нет смысла создавать дополнительные подзапросы.

select distinct name, number_plate, violation 
from fine 
group by name, number_plate, violation 
having count(number_plate) > 1 
order by name, number_plate, violation;
name number_plate violation
Abramova K.A. 0111AB Proezd na zapr sigmnal
Baranov P.E. P523BT Previshenie skorosti (ot 40 do 60)
→ Ссылка