【问题标题】:Difference between sum of two record sets grouped by the same column按同一列分组的两个记录集之和之间的差异
【发布时间】:2015-08-04 10:25:26
【问题描述】:

我需要编写一个 SQL 查询来计算欧洲和亚洲之间的收入差异。我受到应用程序开发人员的限制,无法分两步计算(分别计算每个大陆的总数,然后计算差异)

这是数据库:

Sales(s_key, s_key, s_product, s_date, s_amount, s_quantity) 

Customer(c_key, c_name, c_city, c_country, c_continent)

你能帮我扩展这个计算欧洲收入的查询,以获得与亚洲收入的差异吗? 谢谢!

Select Sum(s_amount)
From Sales
Where c_continent = 'Europe'
Group By c_continent

【问题讨论】:

    标签: mysql sql oracle group-by aggregation


    【解决方案1】:
    select  sum(case s_continent
                when 'Europe' then s_amount 
                when 'Asia' then -s_amount 
                end) as EuropeMinusAsia
    from    Sales
    

    【讨论】:

    • 谢谢安多玛。这不是标准的 SQL,对吧?我需要安装另一个插件来支持这个查询吗?
    • 在我看来相当标准 - 也许-1 * s_amount 更常见
    • 我的意思是 sum 函数中的 Case 子句。是标准的 SQL 代码吗?
    • sum(case ... 是基本 SQL 的一部分,我所知道的所有数据库都支持开箱即用
    猜你喜欢
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    相关资源
    最近更新 更多