![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
kvadrokub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.9.2010 Репутация: 1 Всего: 1 |
Всем доброго времени суток. На экзамене по БД попался такой вопрос с написанием SQL-запроса:
Имеется таблица: ++++++++++++++++++++++++++++ | id | Номер команды | Результат | ++++++++++++++++++++++++++++ | 1 | 10 | 1000 | | 2 | 12 | 1100 | | 3 | 10 | 500 | | 4 | 11 | 700 | | ... | ... | ... | ++++++++++++++++++++++++++++ Найти номер команды, которая больше всего раз встречается в таблице. Вот примерно так выглядит условие. Помогите, пожалуйста. Это сообщение отредактировал(а) kvadrokub - 18.10.2010, 08:11 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kvadrokub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.9.2010 Репутация: 1 Всего: 1 |
top 1 - это, получается, одно самое большое значение?
Это сообщение отредактировал(а) kvadrokub - 18.10.2010, 08:32 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
При указанной сортировке - да. Есссно это диалектозависимо - например в MySQL это будет LIMIT 1.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kvadrokub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.9.2010 Репутация: 1 Всего: 1 |
Тогда немного конкретизирую задачу. Написать без top 1, а с помощью подзапросов. Также, чтобы не было диалектозависимо, а было на чистом SQL. |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 1 Всего: 130 |
Это как так, интересно? Тебе Akina пример запроса привёл, а далее говоришь преподу, что частный случай зависит от конкретной СУБД. ![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
kvadrokub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.9.2010 Репутация: 1 Всего: 1 |
Нужно как раз-таки написать так, чтобы запрос работал на любой СУБД одинаково и не нужно было ничего менять, т.е. на голом ANSI SQL. Ну, например, только с использованием max и count. Это сообщение отредактировал(а) kvadrokub - 18.10.2010, 09:17 |
|||
|
||||
Zloxa |
|
||||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
SQL92
Вернет ВСЕ команды, повторяющиеся наиболшьшее количество раз. может статься, что этот запрос вполне соответствует и SQL86 SQL2003
Вернет любую одну команду, повторяющуюся наибольшее количество раз Если нужно чтобы были выведены все команды, повторяющиеся наибольшее количество раз, row_number заменить на dence_rank Добавлено @ 09:46 следует отметить что SQL2003 держут отнюдь не все движки. Ровно как и SQL92 Это сообщение отредактировал(а) Zloxa - 18.10.2010, 09:51 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kvadrokub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.9.2010 Репутация: 1 Всего: 1 |
Вау, супер!
![]() ![]() А у меня первоначальный вариант был примерно такой: SELECT TEAM FROM TABLE, (SELECT TEAM, COUNT(TEAM) AS CNT FROM TABLE GROUP BY TEAM) A WHERE TABLE.TEAM = A.TEAM AND (SELECT MAX(CNT) FROM A) = и вот тут ступор ![]() |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
предикат вернет истину для каждой строки. Это сообщение отредактировал(а) Zloxa - 18.10.2010, 10:12 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
kvadrokub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.9.2010 Репутация: 1 Всего: 1 |
Кстати говоря, никто из вас не умеет правильно писать запросы.
![]() ![]() Это сообщение отредактировал(а) kvadrokub - 18.10.2010, 10:40 |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
ты не мог бы намекнуть менее прозрачно? Это сообщение отредактировал(а) Zloxa - 18.10.2010, 10:40 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
kvadrokub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.9.2010 Репутация: 1 Всего: 1 |
Я про этот запрос: select command from table group by commmand having count(*) = (select max(count(*)) from table group by command) |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |