#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;
Комментариев нет:
Отправить комментарий