Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос про GROUP BY  [new]
Емил
Guest
Интересен мне такой вопрос:

1. Вариант
SELECT COL1,COUNT(*)
FROM TBL GROUP BY COL1 HAVING COUNT(*)>123

2. Вариант
SELECT COL1,COUNT(*) AS CNT
FROM TBL GROUP BY COL1 HAVING CNT>123

Вариант 2 синтактически неверен. Нелзья
в HAVING указать CNT.
Ето верно не только для MSSQL, но
и в Interbase и в ORACLE и можеть быть везде.

Вопрос такой: Почему? Почему нельзя дать имя?
Должна же быть теоретическая причина.
Наверно ето входить в стандарт SQL языка.
Но я не могу угадать причину.
(Досадно особенно если вместо
count(*) стоит длинное выражение - надо писать 2 раза)
4 июл 03, 19:43    [252068]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
Crimean
Member

Откуда:
Сообщений: 13148
select * from

(
SELECT COL1,COUNT(*) AS CNT
FROM TBL GROUP BY COL1
) as q
where CNT>123
4 июл 03, 20:00    [252075]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
MiCe
Member

Откуда: RUSSIA STAVROPOL Pyatigorsk
Сообщений: 1996
ток так упадет производительность....
7 июл 03, 10:31    [252690]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
(Досадно особенно если вместо
count(*) стоит длинное выражение - надо писать 2 раза)


А буфером обмена в текстовом редакторе мы уже пользоваться не умеем?
7 июл 03, 10:35    [252697]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
Емил
Guest
2 ALL
вопрос не про то как сделат запрос или обойти другим
способом, а про то:

Почему ето в теории так сделано?

(Опять: ето не только в MSSQL, а видимо в
все серверах. По крайней мере в MSSQL,
Interbase и ORACLE)

Другой пример:

1. SELECT COL1 AS NEW_NAME FROM TBL WHERE COL1=1 - ОК
2. SELECT COL1 AS NEW_NAME FROM TBL WHERE NEW_NAME=1 - нельзя.

Почему?
7 июл 03, 10:54    [252728]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
ale-805
Member

Откуда: Питер
Сообщений: 670
2 MiCe:
Производиетльность падать из-за внешнего селекта не должна, сверьте планы.
7 июл 03, 11:00    [252738]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
ale-805
Member

Откуда: Питер
Сообщений: 670
2 Емил:
Соответственно, всё включаем во внешние селекты, сверяем планы выполнения и сидим на попе ровно.
7 июл 03, 11:01    [252740]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
Емил
Guest
2 ale-805

Ну разве непонятно что спрашиваю?
НЕ ИНТЕРЕСУЕТЬ КАК обойти или как сделат запрос.
ИНТЕРЕСУЕТ: ПОЧЕМУ НЕЛЬЗЯ ТАК?
ПОЧЕМУ, а не КАК.
7 июл 03, 11:11    [252766]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
MiCe
Member

Откуда: RUSSIA STAVROPOL Pyatigorsk
Сообщений: 1996
тогда вопрос не к нам.... а к комитету стандартизации.....
2 ale-805 не все так просто как кажется..... обсоблемо с вложенными группировками....
7 июл 03, 11:15    [252774]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
3 Емил

ИНТЕРЕСУЕТ: ПОЧЕМУ НЕЛЬЗЯ ТАК?

А вот почему на автомобиле летать нельзя? Да потому что, автомобиль не может летать, и это написано в тех.документации на автомобиль. Точно так же и в доке по сиквелу написано, что допустимо в предложениях where, having и group, а что нет.
7 июл 03, 11:17    [252779]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
fima
Member

Откуда: Москва
Сообщений: 583
если хотите теории, то в условиях отбора Вы обращаетесь к атрибутам отношения, а переименование атрибута отношения это отдельная операция в ходе которой получается новое отношение (это из теории множеств). А вы пытаетесь обратится к атрибуту отношения которого еще нет.
7 июл 03, 11:20    [252787]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
fima
Member

Откуда: Москва
Сообщений: 583
В дополнение, поэтому Ваш вариант синтаксически неверен, а вот вариант Crimean правильный.
7 июл 03, 11:21    [252792]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480
2Емил:
Чтобы ответить на твой вопрос, нужно посмотреть формальную грамматику T-SQL и понять, что...наверное, ее (грамматики) расширение псевдонимами в having приведет к ее конфликтам...неоднозначностям ну и т.п.
В общем, смотреть надо туда...
7 июл 03, 11:22    [252797]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про GROUP BY  [new]
Емил
Guest
2 fima

>>>А вы пытаетесь обратится к атрибуту отношения которого еще нет.

Спасибо. Наверно это найболее точный ответ.

2 Berg
>>>...ее (грамматики) расширение псевдонимами в having приведет к ее конфликтам...неоднозначностям ну и т.п. <<<

Я тоже это подозревал, но никак не могу придумать
пример для демонстрации.
7 июл 03, 11:56    [252859]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить