【问题标题】:Why does Calcite change GROUP_CONCAT to LISTAGG?为什么 Calcite 将 GROUP_CONCAT 更改为 LISTAGG?
【发布时间】:2022-05-10 21:04:07
【问题描述】:

我使用以下 SQL 构建了 RelNode

 SELECT GROUP_CONCAT(ename ORDER BY ename DESC SEPARATOR 'a') FROM emp

我使用RelToSqlConverter 将其转换为 SQL。我得到这个 SQL:

SELECT LISTAGG(`ename`, 'a') WITHIN GROUP (ORDER BY `ename` IS NULL DESC, `ename` DESC) FROM `emp`

但我想得到GROUP_CONCAT 而不是LISTAGG

【问题讨论】:

    标签: apache-calcite


    【解决方案1】:

    查看https://issues.apache.org/jira/browse/CALCITE-4349

    GROUP_CONCAT 类似于 LISTAGG(请参阅 CALCITE-2754)(也类似于 BigQuery 和 > PostgreSQL 的 STRING_AGG,请参阅 CALCITE-4335)。例如查询

    SELECT deptno, GROUP_CONCAT(ename ORDER BY empno SEPARATOR ';')
    FROM Emp
    GROUP BY deptno
    

    等价于(在方解石的代数中将被取消)

    SELECT deptno, LISTAGG(ename, ';') WITHIN GROUP (ORDER BY empno)
    FROM Emp
    GROUP BY deptno
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多