首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中两个级数的差异

MySQL中两个级数的差异
EN

Stack Overflow用户
提问于 2010-05-17 08:40:52
回答 2查看 75关注 0票数 0

我在MySQL中有一个表,其中包含以下字段:日期、值、类型。

类型可以是exports或imports。我想要一个返回每个月贸易逆差(出口-进口)的查询。这可以通过一个查询来实现吗?

EN

回答 2

Stack Overflow用户

发布于 2010-05-17 09:07:52

您应该将日期作为年/月/日存储在单独的列中,或者有一些方法可以轻松地链接到允许您这样做的表,否则您必须对每个date列进行缓慢的计算才能计算出月份。我暂时让它看起来像你已经得到的一样,但是我建议以不同的方式存储日期,以使计算变得更容易(如果你只按月分组,那么额外的一列存储EXTRACT(YEAR_MONTH FROM date)的结果将使整个计算速度更快。

假设"Value“是某种数字:

代码语言:javascript
复制
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)

(我还没有测试过这一点,可能会有一些语法混淆,但它应该可以工作)

票数 1
EN

Stack Overflow用户

发布于 2010-05-17 09:04:17

我不认为你可以在一个查询中做到这一点,因为你需要两个不同的WHERE子句。

您可以使用以下查询检索导出:

代码语言:javascript
复制
SELECT SUM(VALUE) FROM table WHERE MONTH(date) = month AND YEAR(date) = year AND Type = 'exports'

您可以使用以下查询检索导入:

代码语言:javascript
复制
SELECT SUM(VALUE) FROM table WHERE MONTH(date) = month AND YEAR(date) = year AND Type = 'imports'

这里假设Value是一个数值字段,date是一个日期时间或日期字段。

很抱歉SQL只占一行,但我不知道如何在代码示例中换行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2846119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档