【问题标题】:SQL apply sum avg conditionallySQL 有条件地应用 sum avg
【发布时间】:2012-03-19 15:07:56
【问题描述】:

假设我们有下表:

索引值
1 55
2 66
3 77
1 88
3 99

如何在一个 select 语句中当 index=1 或 index=3 时 sum(value) 和 index=2 时 avg(value)?

【问题讨论】:

  • 您的预期结果是什么(表格形式)?

标签: sql sum sybase average


【解决方案1】:

轻松:

SELECT index, CASE WHEN index IN (1, 3) THEN SUM(value) ELSE AVG(value) END
FROM yourTable
GROUP BY index

【讨论】:

    【解决方案2】:
    SELECT sum(value) as agg,
           'S' as aggregateType
    FROM DaTAble
    WHERE index IN (1, 3)
    
    UNION ALL
    
    SELECT avg(value) as agg,
           'A' as aggregateType
    FROM DaTAble
    WHERE index = 2
    

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多