Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сгрупировать в запросе по полю с функцией [D6, IB6.x]


Mic_2000 ©   (2003-05-19 16:49:00) 

Есть примерно такой запрос:

select NOM, div(CKFK,10000)*10000 AS CKFK from TABLE
group by CKFK


Вообщем неполучается сгрупировать, можно ли как то это сделать без промежуточной таблицы


Johnmen   (2003-05-20 09:18:00) [1]

>Danilka © (20.05.03 07:49)
>если в интербезе можно группировать только по реальным полям,
>то это, конечно, проблемы интербейза.

Нет. Это проблемы "орокле" :)
Как сервера, ушедшего сильно в сторону в своем диалекте от SQL92. (Хорошо это или плохо, обсуждать не будем...:))

>Zacho © (20.05.03 08:16)
>...если не ошибаюсь, в FB.

Нет. По крайней мере в 1.0 нельзя...


Zacho   (2003-05-20 08:16:00) [2]

В IB - нельзя. Можно в Yaffil и, если не ошибаюсь, в FB.
Если нет желания перейти на Ya или FB, то стандартное решение - создать вычислимое поле (COMPUTED BY или заполняемое триггерами) и группировать по нему.


Danilka   (2003-05-20 07:49:00) [3]

Johnmen © (19.05.03 17:42)
только что проверил в орокле:

SELECT round(balance_account,-2)||round(balance_account,-3), count(*)
FROM accounts_card
GROUP BY round(balance_account,-2)||round(balance_account,-3)

и вот-так:

SELECT xxx, sum(balance_account)
FROM (SELECT round(balance_account,-2)||round(balance_account,-3) xxx, balance_account FROM accounts_card)
GROUP BY xxx

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


Johnmen   (2003-05-19 22:37:00) [4]

>Rad © (19.05.03 21:51)

>...какой-то подобный финт ВРОДЕ КАК был.

Но только не в IB6...:) И не в стандарте SQL92.


Rad   (2003-05-19 21:51:00) [5]

2 Johnmen © (19.05.03 17:42)
М-да, переклинило что-то меня.
Просто так можно сортировать (удобно при каких-то вычислениях в списке выбираемых полей - asиногда не помогает [-л?]); а по поводу хитрой группировки какой-то подобный финт ВРОДЕ КАК был.


Соловьев   (2003-05-19 17:58:00) [6]

попробовать вычислять ХП, а потом групировать...


Johnmen   (2003-05-19 17:42:00) [7]

>Mic_2000 © (19.05.03 16:49)

Нет,

>Danilka © (19.05.03 16:59)

Нет,

>Rad © (19.05.03 17:17)

И нет !

Группировать можно только по реальным полям, причем все поля, не входящие в агрегатные ф-ии должны быть в группировке.



Rad   (2003-05-19 17:17:00) [8]

GROUP BY 1


Danilka   (2003-05-19 16:59:00) [9]

1.
а что такое NOM?
может надо sum(NOM) или добавить его в уровень группировки?

2.
незнаю, в интербейзе можно делать так:
select sum(NOM), CKFK
from (select NOM, div(CKFK,10000)*10000 AS CKFK from TABLE)
group by CKFK

правда, на большом обьеме данных тормоза будут


Stas   (2003-05-19 16:56:00) [10]

Что такое NOM ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо