Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка самых частых значений 
V
    Опции темы
Onis
  Дата 2.10.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 18.6.2005
Где: Украина, Николаев

Репутация: нет
Всего: 3



Для статистики нужно получить из таблицы пять самых часто попадающихся значений одного из её полей. Как это сделать одним запросом?
PM MAIL   Вверх
DimW
Дата 2.10.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



для оракл:
Код

select name
  from (select t.name
              ,count(*) qnt
          from table1 t
         group by t.name
         order by qnt desc)
 where rownum < 6


PM MAIL ICQ   Вверх
Onis
Дата 2.10.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 18.6.2005
Где: Украина, Николаев

Репутация: нет
Всего: 3



ммм... мне для мускула прокатит?
PM MAIL   Вверх
DimW
Дата 2.10.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



даже так:
Код

select name
  from (select t.name
          from table1 t
         group by t.name
         order by count(*) desc)
 where rownum < 6


Добавлено через 59 секунд
для мускула смотри LIMIT
PM MAIL ICQ   Вверх
Zloxa
Дата 2.10.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Onis @  2.10.2009,  14:34 Найти цитируемый пост)
пять самых часто попадающихся значений одного из её полей


Код

select поле_со_значением, count(*) cnt
group by поле_со_значением
order by cnt desc
limit 5

Код

select top 5 поле_со_значением, count(*) cnt
group by поле_со_значением
order by cnt desc

Код

select * from (
  select поле_со_значением, count(*) cnt, rownum rn
  group by поле_со_значением
  order by cnt desc
)
where rn <= 5




--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
DimW
Дата 2.10.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Zloxa, последний пример должен вернуть ерунду т.к. rownum и order by  в одном запросе используются.

Добавлено через 1 минуту и 2 секунды
касательно оракла конечно
PM MAIL ICQ   Вверх
Zloxa
Дата 2.10.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(DimW @  2.10.2009,  14:51 Найти цитируемый пост)
должен вернуть ерунду 

да, виноват, спасибо
Ваще ужос, что со мной происходит, smile  это же как жы-шы, в первом классе проходят


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Gluttton
Дата 2.10.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Цитата(DimW @  2.10.2009,  14:42 Найти цитируемый пост)
для оракл:

Цитата(Onis @  2.10.2009,  14:43 Найти цитируемый пост)
ммм... мне для мускула прокатит?

Используйте ANSI-вариант и будте кросс-платформенны smile ...



--------------------
Слава Україні!
PM MAIL   Вверх
Onis
Дата 2.10.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 18.6.2005
Где: Украина, Николаев

Репутация: нет
Всего: 3



Так получилось что на том сервере стоит четвертая версия мускула, она не поддерживает встроенные запросы, пришлось написать скрипт который считает статистику. Но всё равно всем спасибо.
PM MAIL   Вверх
Zloxa
Дата 2.10.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Gluttton @  2.10.2009,  16:35 Найти цитируемый пост)
Используйте ANSI-вариант

Я так понимаю оконный row_number() уже тоже ANSI smile
Если не ошибаюсь 2003.



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
DimW
Дата 5.10.2009, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(Gluttton @  2.10.2009,  16:35 Найти цитируемый пост)
Используйте ANSI-вариант и будте кросс-платформенны

да ну нафиг  smile
ИМХО использование особенностей синтаксиса SQL конкретной СУБД это больше плюс для разработчика чем минус.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.