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

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

вложенный запрос [D7, FireBird 1.5]


Страницы:   1 2

Цукор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


Страницы:   1 2

Наверх

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