回答

收藏

如何使用GROUP BY一次计算新类和旧类

技术问答 技术问答 239 人阅读 | 0 人回复 | 2023-09-14

例如,我有这样的数据:/ r# j8 [8 p/ _4 i' k
            Group    Money    A      100     A      2000                  B      100     B      300                      3000B         110110我想使用GROUP BY(其我的数据,如下所示:
/ W% j5 G- k7 I1 I5 F            Group    Money  Average  Count    A      300     150    2                      300         500    15050                                                                                                                                                                                                                                300000000000                                                                                                                                                                                                                                                                                                        B       510    170    3                510           170   170 C       810     162    55                        810C组是指A&B组8 z. L: t* u+ ~, |
有没有办法通过一些简单的方法获得结果?
1 }& w; I# g& F% W# M4 y                                                                0 u$ H: d: Z% B9 e5 ]5 }7 o, M
    解决方案:                                                               
; t4 q2 R% B4 i                                                                你正在寻找的是ROLLUP。可以通过不同的方式来完成此操作,具体取决于您所使用的数据库:
: m0 }, u" s/ ^+ M2 s% y7 `: _3 I) EDB2,HANA,Oracle,PostgreSQL 9.5,SQL Server,Sybase SQL Anywhere在SQL该标准还规定:/ U, M+ U4 x& Q5 i% G3 M
SELECT COALESCE("Group",'C'),SUM(Money),AVG(Money),COUNT(*)FROM tGROUP BY ROLLUP ("Group")Cubrid,MariaDB,MySQLSELECT COALESCE(`Group`,'C'),SUM(Money),AVG(Money),COUNT(*)FROM tGROUP BY `Group` WITH ROLLUP其他SELECT "Group",SUM(Money),AVG(Money),COUNT(*)FROM tGROUP BY "Group"UNION ALLSELECT 'C',SUM(Money),AVG(Money),COUNT(*)FROM t
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则