我在MySQL中有一个表,其中包含以下字段:日期、值、类型。
类型可以是exports或imports。我想要一个返回每个月贸易逆差(出口-进口)的查询。这可以通过一个查询来实现吗?
发布于 2010-05-17 09:07:52
您应该将日期作为年/月/日存储在单独的列中,或者有一些方法可以轻松地链接到允许您这样做的表,否则您必须对每个date列进行缓慢的计算才能计算出月份。我暂时让它看起来像你已经得到的一样,但是我建议以不同的方式存储日期,以使计算变得更容易(如果你只按月分组,那么额外的一列存储EXTRACT(YEAR_MONTH FROM date)的结果将使整个计算速度更快。
假设"Value“是某种数字:
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)(我还没有测试过这一点,可能会有一些语法混淆,但它应该可以工作)
发布于 2010-05-17 09:04:17
我不认为你可以在一个查询中做到这一点,因为你需要两个不同的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'这里假设Value是一个数值字段,date是一个日期时间或日期字段。
很抱歉SQL只占一行,但我不知道如何在代码示例中换行。
https://stackoverflow.com/questions/2846119
复制相似问题