我在MySQL中有一个包含以下字段的表:date,Value,Type。MySQL中两个系列的区别
类型可以是出口或进口。我想要一个查询来返回每个月的贸易赤字(出口 - 进口)。这可能与一个单一的查询?
我在MySQL中有一个包含以下字段的表:date,Value,Type。MySQL中两个系列的区别
类型可以是出口或进口。我想要一个查询来返回每个月的贸易赤字(出口 - 进口)。这可能与一个单一的查询?
我不认为你可以在一个查询中做到这一点,因为你需要2个不同的WHERE子句。
可以检索与下面的查询出口:
SELECT SUM(VALUE) FROM table WHERE MONTH(date) = month AND YEAR(date) = year AND Type = 'exports'
你可以用下面的查询检索进口:
SELECT SUM(VALUE) FROM table WHERE MONTH(date) = month AND YEAR(date) = year AND Type = 'imports'
这是假定值是一个数字字段和日期是DATETIME或DATE字段。
对不起,在一行上的SQL,但我不知道如何在代码示例中换行。
您应该将日期存储为单独的列中的年/月/日,或者通过某种方式轻松链接到允许您执行的表格,否则您必须对每个date
列执行缓慢的计算,以计算月。我会留下它,因为你现在已经知道了,但我会建议以不同的方式存储日期,以便使计算变得更加容易(如果你只按月分组,那么存储EXTRACT(YEAR_MONTH FROM date)
结果的额外列会使它更快。总体
假设“价值”是某种形式的数字:
SELECT
EXTRACT(YEAR_MONTH FROM date) AS month,
SUM(
CASE Type
WHEN 'export' THEN Value
ELSE -1 * Value
END
) AS trade_deficit
FROM
mytable
GROUP BY
EXTRACT(YEAR_MONTH FROM date)
(我没有测试过这一点,可能有一些语法mixups,但它应该工作)
什么类型数据进入“价值”列? – gurun8 2010-05-17 00:51:20