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

puf*_*dad 8 mysql sql

例如,我有这样的数据:

   Group    Money
    A       100
    A       200
    B       100
    B       300
    B       110
Run Code Online (Sandbox Code Playgroud)

我想使用GROUP BY(其他东西)来总结我的数据,如下所示:

   Group    Money  Average  Count
    A       300     150       2
    B       510     170       3
    C       810     162       5
Run Code Online (Sandbox Code Playgroud)

哪个C组表示A组和B组

有没有办法以某种简单的方式得到结果?

Luk*_*der 16

你要找的是一个ROLLUP.这可以通过不同的方式完成,具体取决于您使用的数据库:

DB2,HANA,Oracle,PostgreSQL 9.5,SQL Server,Sybase SQL Anywhere

这也在SQL标准中指定:

SELECT COALESCE("Group", 'C'), SUM(Money), AVG(Money), COUNT(*)
FROM t
GROUP BY ROLLUP ("Group")
Run Code Online (Sandbox Code Playgroud)

Cubrid,MariaDB,MySQL

SELECT COALESCE(`Group`, 'C'), SUM(Money), AVG(Money), COUNT(*)
FROM t
GROUP BY `Group` WITH ROLLUP
Run Code Online (Sandbox Code Playgroud)

其他

SELECT "Group", SUM(Money), AVG(Money), COUNT(*)
FROM t
GROUP BY "Group"
UNION ALL
SELECT 'C', SUM(Money), AVG(Money), COUNT(*)
FROM t
Run Code Online (Sandbox Code Playgroud)