Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.06.02;
Скачать: CL | DM;

Вниз

запрос   Найти похожие ветки 

 
Леха2   (2010-11-11 15:36) [0]

Имеется представление, в котором, предположим, есть 3 поля:
Num (номер)
Value (кол-во)
Type (тип. Где 0-приход, 1-расход)

Задача: просчитать общее количество с учетом прихода и расхода.

В данный момент я расчитываю так:
Сумма прихода  =  select sum(Value) from таблица where Type=0
Сумма расхода  =  select sum(Value) from таблица where Type=1

Общая = Сумма прихода - Сумма расхода

Можно ли делать еще быстрее? Предположим, не двумя запросами, а одним?
В общем, рассмотрю любые варианты.

Спасибо!


 
sniknik ©   (2010-11-11 15:39) [1]

> Предположим, не двумя запросами, а одним?
если субд/движок поддерживает то почему бы и нет? хотя постой, у тебя же нет субд/движка. НЕЛЬЗЯ!

> В общем, рассмотрю любые варианты.
используй субд.


 
Леха2   (2010-11-11 15:48) [2]

>у тебя же нет субд/движка

Есть. Я ж написал, использую представление. Firebird использую в качестве БД.

>то почему бы и нет

И как он будет выглядеть?


 
12 ©   (2010-11-11 15:54) [3]

select sum(Value), Type from таблица group by Type


 
sniknik ©   (2010-11-11 16:03) [4]

> select sum(Value), Type from таблица group by Type
это возможно будет дольше чем типа (смотря как индексы по полю учасnвуют) -
select
 sum(case when Type=0 then Value else  0 end) as sum1,
 sum(case when Type=1 then Value else  0 end) as sum2
from таблица


 
Petr V. Abramov ©   (2010-11-11 16:06) [5]


> Type (тип. Где 0-приход, 1-расход)

делаем  1 -приход, -1 -расход
теперь
select sum(value*type) from таблица дает искомое


 
12 ©   (2010-11-11 16:24) [6]


> делаем  1 -приход, -1 -расход
> теперь
> select sum(value*type) from таблица дает искомое

тоже хотел сказать!
но, блин, автор последнюю строчку

> Общая = Сумма прихода - Сумма расхода

как код не выделил, и ее не прочитал внимательно :)


 
Леха2   (2010-11-11 16:48) [7]

Спасибо всем! Помогло.



Страницы: 1 вся ветка

Текущий архив: 2013.06.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.006 c
15-1358452765
NailMan
2013-01-17 23:59
2013.06.02
К любителям походов вопрос


2-1351266946
FIL-23
2012-10-26 19:55
2013.06.02
Как обновить данные в DBGrid


15-1358364990
zzz
2013-01-16 23:36
2013.06.02
Посоветуйте принтер


15-1359029346
Студент
2013-01-24 16:09
2013.06.02
Колонка и микрофон.


15-1359103131
DevilDevil
2013-01-25 12:38
2013.06.02
Оптимальный размер буфера для чтения/записи файла