sql 中 case when 函数 和group by使用注意

    技术2025-01-27  7

    编写一个 SQL 查询来重新格式化表,使得新的表中有一个部门 id 列和一些对应 每个月 的收入(revenue)列。 查询结果格式如下面的示例所示:

    Department 表:

    ±-----±--------±------+

    | id | revenue | month |

    ±-----±--------±------+

    | 1 | 8000 | Jan |

    | 2 | 9000 | Jan |

    | 3 | 10000 | Feb |

    | 1 | 7000 | Feb |

    | 1 | 6000 | Mar |

    ±-----±--------±------+

    查询得到的结果表:

    ±-----±------------±------------±------------±----±------------+

    | id | Jan_Revenue | Feb_Revenue | Mar_Revenue |… | Dec_Revenue |

    ±-----±------------±------------±------------±----±------------+

    | 1 | 8000 | 7000 | 6000 | … | null |

    | 2 | 9000 | null | null | … | null |

    | 3 | null | 10000 | null | … | null |

    ±-----±------------±------------±------------±----±------------+ 转自leetcode

    有两点需要注意的,

    1.group by 要和聚合函数搭配 2.每个case when 实际上是新增列,在新增列上每个id行数和原表相等,然后以id分组对该列做max聚合生成新列,虽然有的为null,hhh~

    Processed: 0.009, SQL: 9