SQL, SUM

DavyJohnes
На сайте с 05.01.2011
Offline
84
842

Имеется таблица:


id_sotr zp
1 15
3 25
1 37
2 48
2 78
3 96

Как получить такую штуку?


sum_1 sum_2
52 247

где sum_1 сумма всех 'zp' у которых 'id_sotr'=1, а sum_2 сумма всех 'zp' у которых 'id_sotr'<>1

https://handy-tools.io (https://handy-tools.io) - Набор полезных утилит для всех!
DavyJohnes
На сайте с 05.01.2011
Offline
84
#1
xxxbb:
както так должно работать :)

Че т не работает.... Пробовал в Firebird, он говорит "Unknown toke if"

DavyJohnes
На сайте с 05.01.2011
Offline
84
#2
xxxbb:
DavyJohnes, вы бы еще в экселе попробовали .... данные то где хранятся? я запрос под mysql давал :)

Ну... думал нет разница ) SQL он и в африке SQL. Данные хранятся в FB

Sect0R
На сайте с 25.06.2008
Offline
64
#3

Согдасен с xxxbb, да и работать они будут быстрее смежного.

Все запросы храню в Топвизоре (http://topvisor.ru/?inv=10564)
Polimer
На сайте с 01.09.2006
Offline
84
#4

На сколько я еще помню Firebird, запрос должен выглядеть как-то так (FB >= 1.5):


SELECT
SUM(
CASE
WHEN id_sotr = 1 THEN zp
ELSE 0
END
) AS SUM_1,
SUM(
CASE
WHEN id_sotr <> 1 THEN zp
ELSE 0
END
) AS SUM_2
FROM Table_1

НО! Нужно смотреть план запроса и сравнивать его с планом двух простых запросов (тут неизвестно, что будет быстрее - у FB весьма хитрый оптимизатор).

Программные решения для бизнеса. (http://frontsoft.ru/) На заказ. Дорого.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий