#sql
Получил на собеседовании задание по sql:
Получить имя и количество раз, сколько оно повторялось, но вывести
только те имена, которые повторялись больше 2-х раз - сортировка по
количеству повторений, от большего до меньшего.
Моим решением было:
select name, count(name)
from table
group by name
having count(name) > 2
order by count(name) desc;
фидбек интервьюера был таким: запрос "почти" правильный.
Может кто-то подсказать, как его надо поменять или улучшить?
Ответы
Ответ 1
ORDER BY выполняется после SELECT, поэтому count(name) в нем ИМХО лишний: select name, count(name) AS num from table group by name having count(name) > 2 order by num desc; Кроме того безымянное поле count(name) выглядит не очень красиво. Может быть еще и поэтому "почти" правильно?Ответ 2
Я бы написал так, чтобы не вычислять три раза count select name, count(name) from table group by name having count(name) > 2 order by 2 desc; Или через алиасы select name, count(name) cnt from table group by name having count(name) > 2 order by cnt desc;
Комментариев нет:
Отправить комментарий