Как упростить запрос? Научите плиз)
Вывести фамилию, номер машины и нарушение только для тех водителей, которые на одной машине нарушили одно и то же правило два и более раз. При этом учитывать все нарушения, независимо от того оплачены они или нет. Информацию отсортировать в алфавитном порядке, сначала по фамилии водителя, потом по номеру машины и, наконец, по нарушению. Таблица - 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) |