mysql - 如何在mysql中添加按新组分组的行?

标签 mysql sql

更新:这道题和上一道不同,当我在这道题中使用ROLLUP时,它会添加一个总计行,但我只想要一个C组来合并A组和B组,因此C组显示小计颜色 X、Y 和 Z。不需要总行。

我有这样的数据

Group Color Money
A     X     100
A     X     300
A     Y     200
B     X     200
B     Y     300
B     Y     100
B     Z     110

我想创建一个包含 A 和 B 的新组 C

mysql有这样查询数据的吗?

Group Color SumMoney AvgMoney DataCount
A     X     400      200      2
A     Y     200      200      1
B     X     200      200      1
B     Y     400      200      2    
B     Z     110      110      1
C     X     600      200      3
C     Y     600      200      3
C     Z     110      110      1

我认为 UNION 可以解决问题,但它也可能很慢并且语法会很长(更难维护(在这种情况下不是))。有什么建议么?谢谢!

最佳答案

在 MySQL 中使用 UNION ALL:

SELECT
    g.`group`,
    g.color,
    sum(g.money) AS SumMoney,
    CAST(AVG(g.money) AS SIGNED) AS AvgMoney,
    COUNT(g.`group`) AS DataCount
FROM
    groups g
GROUP BY
    g.`group`,
    g.color

UNION ALL

SELECT
    'C',
    g.color,
    sum(g.money) AS SumMoney,
    CAST(AVG(g.money) AS SIGNED) AS AvgMoney,
    COUNT(g.`group`) AS DataCount
FROM
    groups g
GROUP BY
    g.color

输出是:

group | color | SumMoney | AvgMoney | DataCount
-----------------------------------------------
A     | X     |      400 |      200 |        2
A     | Y     |      200 |      200 |        1
B     | X     |      200 |      200 |        1
B     | Y     |      400 |      200 |        2
B     | Z     |      110 |      110 |        1
C     | X     |      600 |      200 |        3
C     | Y     |      600 |      200 |        3
C     | Z     |      110 |      110 |        1

关于mysql - 如何在mysql中添加按新组分组的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35983024/

相关文章:

mysql - 从 MySQL 选择唯一行

mysql - Laravel 中使用不同查询进行左连接

mysql - 如何减少单个查询中冗余的MySQL函数调用?

sql - 如何根据sql中的当前日期获取上周的日期范围?

sql - 在 Visual Studio (ado.net) 中超出了最大存储过程、函数、触发器或 View 嵌套级别,但在 SQL Server 中没有

sql - 表中主键的最佳做法是什么?

mysql - 如何从 Linux 上的 asp.net 核心应用程序迁移我的表

mysql - INDEX Mysql for 字符串

mysql - Cakephp 查询生成器 : update rows with an identical field as selected one

sql - 基于 SQL Server 中另一个查询的 Where 子句