![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
![]() -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kvadrokub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.9.2010 Репутация: 1 Всего: 1 |
||||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
kvadrokub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.9.2010 Репутация: 1 Всего: 1 |
||||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Мне то это зачем? Я знаю где ошибся, но к сути вопроса это отношения не имеет. Хотя да, ты прав. Я ступил. Надо было тебе посоветовать взять букрварь по SQL и почитать его. Это сообщение отредактировал(а) Zloxa - 18.10.2010, 10:50 -------------------- Достоверно известно, что 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) Буду разбирать по косточкам. Возьму для начала вложенный подзапрос: select max(count(*)) from table group by command Во-первых, нельзя писать max(count(*)). Во-вторых, правильно будет выглядеть так: select command, count() или max() - одно из двух from table group by command , т.е. ошибка в написании GROUP BY. Его нельзя использовать так, как ты там писал. Третяя ошибка вглавном запросе, там также в первой строке нужно использовать агрегатную функцию, иначе опять-таки GROUP BY выдаст ошибку. Ну и в четвёртых, исходя из всех этих ошибок весь запрос неверен. Проверял на MySQL, знаю по Oracle. Ну и команда по-английски team, а не command, хотя это не важно, в принципе. Я же говорю, создайте и попробуйте сами, если не верите мне. Это сообщение отредактировал(а) kvadrokub - 18.10.2010, 10:58 |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 2 Всего: 54 |
kvadrokub, а вопрос то у тебя какой, или ты возмущен что тебе дали не вылизанный запрос?
Ты сам думай как делать направление тебе дали, включи голову и не бухти.. Это сообщение отредактировал(а) Frees - 18.10.2010, 11:07 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Zloxa |
|
||||||||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
кто сказал?
вовсе нет, группировка не обязывает к использованию аггрегатов
слово "команда" имеет несколько смылов в русском языке, в лишь одном из них, не самом употребмимом, на английский она переводится как team уболтал ;)
молодец! Развеселил. Такой милый троллинг ![]() Это сообщение отредактировал(а) Zloxa - 18.10.2010, 12:04 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
||||||||
|
|||||||||
kvadrokub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.9.2010 Репутация: 1 Всего: 1 |
С тем, что не обязательно использовать агрегатную функцию с GROUP BY соглашусь, но вот MAX(COUNT(*)), по крайней мере в MySQL (Oracle недавно снёс и не могу проверить), нельзя писать: http://file.qip.ru/photo/_CxZwRKZ/sql.html?
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
оберни в подзапрос
Это сообщение отредактировал(а) Zloxa - 18.10.2010, 12:01 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
kvadrokub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.9.2010 Репутация: 1 Всего: 1 |
Уже. Спасибо за помощь, извини за нападки.
![]() |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
И тебе спасибо, узнал что аггрегат от аггрегата - экзотика. MS,PG,Access так тоже не могут. В оракле эта фишка документирована. Может ктонить про FB сказать? -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 2 Всего: 54 |
в FB 2.0 агрегат от агрегата - нельзя Это сообщение отредактировал(а) Frees - 18.10.2010, 12:46 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Zloxa, экотика - это агрегатная функция без group by. Вернее, либо group by присутствует, пусть и в неявной форме (поля группировки определяются перечнем полей в остальных частях запроса), либо на выходе должна получаться 1 запись вне зависимости от входного набора данных (и 0 записей - если входной набор пуст), но не больше.
А вот если идёт агрегатка от агрегатки... при наличии групбай перечень полей группировки явно никак не подходит либо к внутренней, либо к внешней агрегатке, а при отсутствии внешний групбай к набору из максимум одной записи бессмыслен. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
||||||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
ХМ. имхо это не экзотика, а вполне себе общепринятая практика. без этого бы очень плохо жилось.
Есть такое правило, что при использовании аггрегата без группировки всегда возвращается одна и только одна строка. Именно по этому агрегацию без группировки нельзя представлять как аггрегацию с неявной группировкой по чему бы там ни было. Это обособленный случай. Аггрегация с группировкой, по пустому набору, вернет пустой набор. Аггрегация без группировки, по пустому набору, вернет одну запись.
MS и PG ведут себя так же При вложенной аггрегации, внутренний аггрегат всегда применяется к группам, а внешний - к результату внутреннего, подразумевая отсутствие группировки. Оракля не разрешает вложенные аггрегаты без груп бая. И той неоднозначности, о которой ты говоришь - нет.
Это сообщение отредактировал(а) Zloxa - 18.10.2010, 15:00 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
||||||
|
|||||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |