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
我是 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