SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.06.2010 13:12:05

Артём
Участник
Зарегистрирован: 24.02.2010
Сообщений: 13

Арифметика в MySQL

Примерная таблица со всеми частными прибылями (profit_n) и затратами (costs_m). 

descrip     amount     id

costs_1     1000         6
costs_2     500          6
profit_1     5000         6
profit_2     50            6
costs_1     200           7
costs_2     1500         7
profit_1     2000         7
profit_2     1000         7

Как мне получить общую прибыль? т.е. ((profit_1 + profit_2) - (costs_1 + costs_2)) по каждому `id`.
Спасибо заранее.

Отредактированно Артём (14.06.2010 19:34:49)

Неактивен

 

#2 14.06.2010 19:16:59

Артём
Участник
Зарегистрирован: 24.02.2010
Сообщений: 13

Re: Арифметика в MySQL

Сразу не написал

CREATE TABLE IF NOT EXISTS `profit` (
  `id` int(11) NOT NULL,
  `desc` tinytext NOT NULL,
  `amount` int(11) NOT NULL) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

INSERT INTO `profit` (`id`, `desc`, `amount`) VALUES
(6, 'costs_1', 1000),
(6, 'costs_2', 500),
(6, 'profit_1',  5000),
(6, 'profit_2', 50),
(7, 'costs_1', 200),
(7, 'costs_2', 1500),
(7, 'profit_1', 2000),
(7, 'profit_2', 1000);

Отредактированно Артём (15.06.2010 10:17:25)

Неактивен

 

#3 14.06.2010 19:52:39

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Арифметика в MySQL

select id,ifnull(profit,0)-ifnull(costs,0) as itog from
(select distinct id from `profit_1`) t
left join
(select sum(amount) profit,id from `profit_1` where `desc` like 'prof%' group by id) t1
using(id)
left join
(select sum(amount) costs,id from `profit_1` where `desc` like 'costs%' group by id) t2
using(id) order by id;

Неактивен

 

#4 14.06.2010 21:34:18

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Арифметика в MySQL

А вообще имеет смысл, конечно, хранить числа со знаком, и не писать страшных крокодилов.

Неактивен

 

#5 15.06.2010 10:20:46

Артём
Участник
Зарегистрирован: 24.02.2010
Сообщений: 13

Re: Арифметика в MySQL

согласен, но не я хозяин таблицы smile
кстати вот до чего сам допер, спасибо и за Вашу версию

SELECT sum( if ( `desc` IN ('profit_1', 'profit_2'), amount, - amount ) )
FROM `profit` WHERE id = ?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson