【问题标题】:How to do grouping by multiple columns in MySQL Select Statement如何在 MySQL Select 语句中按多列分组
【发布时间】:2021-12-12 01:34:53
【问题描述】:

以上是我在 MySQL 中的 Select 语句的输出,任何人都可以帮助我,以便我可以按 exp_date 和用户名对以上结果进行分组。所以同一日期的任何用户名只有 1 行

它应该在用户名 S.M.gadekar 的 2021 年 10 月 26 日的单行中显示住宿、寄宿、洗衣和运输列的值。

尝试了所有想法,但我没有得到确切的结果。对此的实际优化解决方案是什么?

【问题讨论】:

标签: mysql select group-by groupwise-maximum


【解决方案1】:

您从组中选择您想要的列,并为其余列使用某种聚合和别名 - 因为看起来一个日期和名称的所有费用值都设置在一行中,MAX() 可以工作, 但SUM() 是这里聚合的更安全选择。要按多列分组,只需在 GROUP BY 语句中使用逗号分隔的列列表:

SELECT username, exp_date, 
    SUM(lodging) AS lodging,
    SUM(boarding) AS boarding,
    SUM(laundry) AS laundry,
    SUM(conveyance) AS conveyance
FROM table
GROUP BY exp_date, username;

也就是说该表可能应该被规范化为三个表,因为这看起来只是第二范式 - 但设计工作得很好。

sqlFiddle

如果您特别希望一天为一个人提供一行,而不是每天为每个人提供一行数据,那么您的 where 子句位于您的 from 和 group 子句之间:

sqlFiddle

【讨论】:

    【解决方案2】:
    • 多列组由 , 分隔 GROUP BY exp_date ,用户名;

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 2011-02-12
      • 2015-12-06
      • 2021-10-15
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      相关资源
      最近更新 更多