teradata sql 助手限制时报错?

teradata sql assistant giving me an error when limiting?

我是 Teradata 的新手,我很难限制结果。我想做的是我想获得最大数量。

现在,它只是给我一个名为 SELECT Failed. 3706: 的错误。谁能告诉我我做错了什么?

我还有一个问题,我有一个名为 onsite = 'Y' 的过滤器。谁能告诉我为什么我也必须按 onsite 分组。否则,我的查询将不会运行。非常感谢你的帮助。

SELECT
      short_sku
    ,  Count(item_full_sku)
FROM category 
GROUP BY short_sku, onsite
HAVING onsite = 'Y'  
ORDER BY Count(full_sku) DESC LIMIT 1

您想使用 TOP 功能:

SELECT TOP 1
      short_sku
    ,  Count(item_full_sku)
FROM category 
WHERE onsite = 'Y'  
GROUP BY short_sku
ORDER BY Count(full_sku) DESC
;

如果您想过滤掉 onsite='Y' 所在的行,您应该将其移至 WHERE 子句。 HAVING 子句用于过滤聚合。

另一种解决方案是利用分析函数,它比 TOP 更通用,例如您可以获得每组的 TOP n 添加 PARTITION BY:

SELECT
      short_sku
    ,  Count(item_full_sku)
FROM category 
WHERE onsite = 'Y'  
GROUP BY short_sku, onsite
QUALIFY row_number() over (ORDER BY Count(full_sku) DESC) = 1