Суммирование положительных и отрицательных чисел

chama

Новичок
Суммирование положительных и отрицательных чисел

Упрощенный варинт задачи:
в таблице два столбца:
summa - с содежит число (в данном случае типа double) - все данные положительные
minus - содержит булевый тип (в данном случае 1 или 0) - 0 summa должна считаться положительной, 1 summa должна ститаться отрицательной.
Делаю запрос вида SELECT sum( summa )
FROM mytab
получаю общую сумму по всему столбцу summa, но мне необходимо учитывать столбец minus.
Подскажите как одним запросом подсчитать такую сумму, т.е. суммируя положительные и отрицательные числа.
 

Bambuk

Новичок
Re: Суммирование положительных и отрицательных чисел

SELECT sum(summa), minus
FROM mytab
GROUP BY minus
 

chama

Новичок
Получается что дальше все равно прийдется считать при помощи php. В смысле вычесть одну сумму из другой. Это наверное лучший вариант для решения этой задачи!?
 

camka

не самка
Код:
mysql> select benchmark(10000000, pow(-1, 1));
+---------------------------------+
| benchmark(10000000, pow(-1, 1)) |
+---------------------------------+
|                               0 |
+---------------------------------+
1 row in set (5.01 sec)

mysql> select benchmark(10000000, if(1=1,1,0));
+----------------------------------+
| benchmark(10000000, if(1=1,1,0)) |
+----------------------------------+
|                                0 |
+----------------------------------+
1 row in set (2.38 sec)
 

chama

Новичок
Спасибо, че-то я сам как то сплаховал. Решение было логично.
 

Morgot

Guest
Можно в 7 раз быстрее.
Пусть знаковое число (0 или 1) - Z
А числовое поле - N
Тогда число с учетом знака (-2*Z+1)*N

-~{}~ 29.07.05 15:41:

Имелось ввиду по сравнению с pow
Если сравнивать с if - одинаково

Кстати, странная вещь
Проверил эти тесты у себя, время с pow - 3.5sek, а время с if - 0.5sek
Т.е. отличие в 7 раз, а в приведенном выше примере разница всего в 2 раза...
 
Сверху