![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вложенный запрос [D7, FireBird 1.5]
Цукор5 © (2010-05-06 17:00:00)Имею такую таблицу:
ID -Integer (генератор)
Num - Integer
PayCash - Numeric(18,2)
... // прочие поля
И такие данные:
567 12 5,00
568 12 5,00
569 13 1,12
570 14 9,99
571 14 9,99
572 14 9,99
Задача : посчитать сумму по ячейке PayCash без повторений.
Сперва решил отобразить все суммы, без повторений. Сделал так:
SELECT num, paycash from таблица group by num, paycash
Получил:
12 5,00
13 1,12
14 9,99
Казалось бы, теперь просто взять сумму по ячейке и результат готов. Но, не могу.
Подскажите, как сделать вложенный запрос вида select sum(ячейка) from (select ... from таблица). Или может можно пойти другим путем?
Заранее спасибо.
P.S. Про хранимые процедуры и представления знаю и могу сделать с помощью них, но нельзя.
База стоит и работает и меня не пустят ее править.Задачу желательно решить с помощью запроса.
Цукор5 (2010-05-06 17:50:00) [21]Пардон, можен написал как-то непонятно.
Задача отобразить сумму. Т.е. 5+1,12+9,99 = 16,11
Цукор5 (2010-05-06 17:47:00) [22]>sniknik ©
И еще одно уточнение. Мне нужна сумма. Т.е одно число. В Ваших запросах я буду иметь опять много записей, но никак не сумму.
Sergey13 (2010-05-06 17:46:00) [23]> [0] Цукор5 (06.05.10 17:00)
> как сделать вложенный запрос вида select sum(ячейка) from
> (select ... from таблица).
Так в ФБ вроде как нельзя.
Но можно попробовать так
SELECT num, sum(paycash)
from таблица t1
where id=(select max(id) from таблица t2 where t2.num=t1.num)
group by num
> ... // прочие поля
> И такие данные:
> 567 12 5,00
> 568 12 5,00
> 569 13 1,12
> 570 14 9,99
> 571 14 9,99
> 572 14 9,99
Такие данные ВОЗМОЖНО говорят о том, что нормализация БД хромает и надо подумать о выводе указанных данных в отдельную таблицу.
Цукор5 (2010-05-06 17:45:00) [24]>а вот именно так и делается как написал
Хм. Почему тогда получаю это:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, char 3.
select.
Да и разве можно подобное делать в FireBird 1.5?
sniknik (2010-05-06 17:43:00) [25]turbouser © (06.05.10 17:33) [2]
это же не сумма
а кстати где то видел такой синтаксис, не знаю уж пойдет с FB и будет ли делать то что хочется...
SELECT num, sum(distinct paycash) from таблица group by num
sniknik (2010-05-06 17:33:00) [26]> как сделать вложенный запрос вида select sum(ячейка) from (select ... from таблица).
а вот именно так и делается как написал... только в основном (вложенном я бы не делал group by я бы сделал distinct все таки группировка предполагает агрегирующие функции, а у тебя их в нем нет)
т.е.
SELECT num, sum(ячейка) from
(select distinct ... from таблица)
group by num
(орфография сохранена... х.з. может в ней что то важное)
turbouser (2010-05-06 17:33:00) [27]SELECT num, max(paycash) from таблица group by num