PHP, MySQL Как суммировать данные в двух разных диапазонах дат


У меня возникли проблемы с этим

+------------+------------+------------+
|   Name     | year       | Value      |
+------------+------------+------------+
| Name1      | 2015       |        100 |
| Name1      | 2014       |        150 |
| Name1      | 2013       |        200 |
| Name2      | 2015       |        130 |
| Name2      | 2014       |        160 |
| Name2      | 2013       |        220 |
+------------+------------+------------+

Значение с (2015 по 2013 год) минус значение с (2014 по 2013 год) Сгруппированы по названию

, который выведет

+------------+------------+
|   Name     | Value      |
+------------+------------+
| Name1      | 100        |
| Name2      | 130        |
+------------+------------+

Или в любом случае я могу использовать SUM с чем-то вроде

(SUM(Name1 WHERE year <= "2014") - SUM(Name1 WHERE year <= "2015") ) AS Value
GROUP BY Name
Author: Abdulla Nilam, 2015-06-16

2 answers

Вам нужно что-то вроде этого

 SELECT (SUM(IF(year <= 2015 AND year >= 2013,value,0) )
         - SUM(IF(year <= 2014 and year >= 2013,value,0) )) AS total_sum
FROM your_table_name
GROUP BY Name

Это сделает свое дело

 2
Author: Meenesh Jain, 2015-06-16 05:38:48

Вы можете использовать вот так

 SELECT (SUM(IF(`year` <= 2015 and `year` >= 2013,value,0) ) ) as total_sum_2015 FROM `table` 

Сделайте то же самое для 2014 года вот так

SELECT (
    SUM( IF( `year` <=2014
    AND `year` >=2013, value, 0 ) )
    ) AS total_sum_2014
    FROM `table`
 0
Author: Khadka Pushpendra, 2015-06-16 05:41:17