如何在 Teradata SQL 中使用 LEFT JOIN 对查询中的非聚合参数进行 GROUP BY?

Posted

技术标签:

【中文标题】如何在 Teradata SQL 中使用 LEFT JOIN 对查询中的非聚合参数进行 GROUP BY?【英文标题】:How to GROUP BY non-aggregation parameters in query with LEFT JOIN in Teradata SQL? 【发布时间】:2021-12-10 18:29:59 【问题描述】:

我在 Teradata SQL 中有如下查询:

SELECT DISTINCT ID
FROM (
SELECT *
FROM
(SELECT c.ID
FROM table c
LEFT JOIN (SELECT ID, COUNT(*) AS trx) as abc
ON c.ID = abc.ID

WHERE 1=1 

AND PARAM = 12

HAVING SUM(trx) > 2

GROUP BY ....

QUALIFY ROW_NUMBER() OVER ( ...) =1) AS q1

QUALIFY ROW_NUMBER() OVER ( ...) =1) AS q2

如您所见,我使用 count(*) 进行了 LEFT JOIN,然后我使用了 HAVING 子句,所以我需要履行 GROUP BY 但我不知道如何履行 GROUP BY?根据我的查询,这个子句应该是什么?

您能帮我解决一下 Teradata SQL 的问题吗?

【问题讨论】:

fulfill GROUP BY 是什么意思?您需要更具体地了解您想要实现的目标...... 这个查询没有意义。请显示示例数据和期望的结果,并解释您要做什么。 【参考方案1】:

您需要先使用“Group by”词干,然后使用“HAVING”语句。你可以看看这个例子

SELECT cliente, SUM(precio)
FROM pedidos
GROUP BY cliente
HAVING SUM(precio) > 500 

在这里你可以看到更多documentation。

【讨论】:

以上是关于如何在 Teradata SQL 中使用 LEFT JOIN 对查询中的非聚合参数进行 GROUP BY?的主要内容,如果未能解决你的问题,请参考以下文章

如何在(Teradata)仅使用 ANSI SQL 时实现重置?

在 teradata 的 sql 语句中使用字符串立即执行

SQL/Teradata:如何返回特定值及其前面的行?

Teradata 中数据计算和导出

Teradata 工具使用SQL Assistant连接每次都需要重新输入口令

为啥 MS-Access 中的 Teradata 查询比 SQL Server 更快