Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2013.06.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
Леха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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
15-1359384923
Error0xDEADBEEF
2013-01-28 18:55
2013.06.02
Пересесть с Delphi на Java/Android


15-1359391746
Медвежонок Пятачок
2013-01-28 20:49
2013.06.02
Формат пакета TClientDataSet D7 и XE2


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


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


2-1351951397
Тимофеич
2012-11-03 18:03
2013.06.02
Проблема сравнения дат





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский