zoukankan      html  css  js  c++  java
  • SQL分组多列统计(GROUP BY后按条件分列统计)

    最近遇到一个问题,需要对一张表做统计,这个统计有什么特别之处值得我记录了下来呢?大家知道SQL中聚合函数GROUP BY的结果一般为一列,即多个值通过聚合函数运算统计到一起,但是如何将不同条件的值统计到不同列中呢,即按条件统计到多个列中。举个栗子:

    YEAR TYPE VALUE
    2015 1 100
    2015 2 200
    2016 1 150
    2016 2 300
    2016 3 100

    转为:

    YEAR TYPE1 TYPE2 TYPE3
    2015 100 200 0
    2016 150 300 100

    这时候我们除了用到GROUP BY之外还需要CASE WHEN,SQL如下:

    SELECT year,
     SUM(CASE WHEN type=1 THEN value ELSE 0 END) as type1,
     SUM(CASE WHEN type=2 THEN value ELSE 0 END) as type2,
     SUM(CASE WHEN type=3 THEN value ELSE 0 END) as type3,
     FROM table_test GROUP BY year

    小小的知识点,记录下来并分享给有需要的人。

    P.S. 这里TYPE是写死的,有没有办法能更灵活一点呢?

  • 相关阅读:
    idea 使用
    scala
    Java开发工具
    ActiveMQ基础
    Java 多线程实战
    Java 内部类和Lambda
    Spring 学习
    平滑重启php
    opcache
    redis的hscan命令
  • 原文地址:https://www.cnblogs.com/eshizhan/p/4394927.html
Copyright © 2011-2022 走看看