使用 group_concat 在对列进行分组时会出错

问题描述 投票:0回答:1

给定名为

events
的表,其中包含列
dt (timestamp)
type (event type, example buy, sell, other)

我想明智地了解

2021
中发生的所有事件。
结果应包含 2 列:

    column1 = 季度数字,后跟单引号,然后是年份的最后 2 位数字。 例如 Q1'21、Q2'21、Q3'21、Q4'21
  • column2 = 格式为##=##,第一个##表示事件类型,接下来的#表示该特定类型的事件总数。
  • 用分号和空格分隔类型。
    • 按事件总数降序排序,然后按类型升序排序。
  • 按第 1 列的升序对结果进行排序。
  • 我能够编写查询来获取各个列,但是当我将它们组合在一起时,我会收到组列错误。

这是我的询问:

获取第 1 列:
  • Quarter
获取第2列:
  • select concat('Q', Quarter(dt), "'", RIGHT(YEAR(dt), 2)) as c1 from events
解决这个问题的正确方法是什么?

mysql
1个回答
0
投票
select group_concat(concat(type, '=', cnt)) as c2 from ( select type, count(*) as cnt, quarter(dt) as qtr from events where year(dt) = 2021 group by type, qtr

放入子查询中,并在分组中使用它。

concat('Q', Quarter(dt), "'", RIGHT(YEAR(dt), 2))

© www.soinside.com 2019 - 2024. All rights reserved.