Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Корректировка sql запроса

#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;

Комментариев нет:

Отправить комментарий