[SQL] сортировка по количеству

uncle17

есть простейшая таблица
[id][value]
как средствами SQL выбрать три максимальных количества value ?

doublemother

SELECT * FROM tablename ORDER BY value DESC LIMIT 3

uncle17

смишно

Bibi

select value from (select count(*) as count, value from abc group by value) a order by a.count desc limit 3;

uncle17

данке, протестирую

Bibi

не смишно. то, о чем ты спрашиваешь, лучше обозвать частотой, если хочешь, чтобы собеседник тебя понял правильно

doublemother

Нужны самые частовстречающиеся что ли? Из исходного вопроса это вообще никак не понять было.
Тогда можно еще так:
select a.value aval, count(b.value) cnt from t a join t b using(value) group by b.value order by cnt desc limit 3;

При этом в cnt будет квадрат встречаемости, зато операция self join протекает крайне быстро.

uncle17

квадрат встречаемости
для двух ксеонов похер, но вообще спасиба, принял во внимание.
Мда, SQL я вообще не знаю :(

okis

а разве нельзя просто выполнить

select COUNT(id value from transactions group by value order by COUNT(id) desc

без всяких селф join?

doublemother

Упс. Я дурак.

cer2008

dense_rank в MSSQL и в Oracle тоже подойдет.

uncle17

нет, этого у нас пока не держится

abur

 
  select top 3 value ,id from (select value, id from yourtable order by value ) a  
 
upd сори, затупил

kill-still

а) ты не правильно понял вопрос
б) зачем писать в 2 селекта то, что можно одним? о.О
Оставить комментарий
Имя или ник:
Комментарий: