teradata sql assistant在限制时给我一个错误?
我是Teradata的新手,很难限制结果。我想做的是得到最大值 现在,它只是给了我一个名为teradata sql assistant在限制时给我一个错误?,sql,teradata,teradata-sql-assistant,Sql,Teradata,Teradata Sql Assistant,我是Teradata的新手,很难限制结果。我想做的是得到最大值 现在,它只是给了我一个名为SELECT Failed的错误。3706:。有人能告诉我我做错了什么吗 我还有一个问题,我有一个名为site='Y'的过滤器。有人能告诉我为什么我也要现场分组吗。否则,我的查询将不会运行。非常感谢你的帮助 SELECT short_sku , Count(item_full_sku) FROM category GROUP BY short_sku, onsite HAVING o
SELECT Failed的错误。3706:
。有人能告诉我我做错了什么吗
我还有一个问题,我有一个名为site='Y'
的过滤器。有人能告诉我为什么我也要现场分组吗。否则,我的查询将不会运行。非常感谢你的帮助
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
功能:
选择前1名
短单品
,计数(项目\u完整\u sku)
从类别
其中现场='Y'
按短sku分组
按计数订购(完整sku)说明
;
如果要筛选出where
onsite='Y'
行,应将其移动到where
子句中。HAVING
子句用于筛选出聚合。要使用TOP
功能:
选择前1名
短单品
,计数(项目\u完整\u sku)
从类别
其中现场='Y'
按短sku分组
按计数订购(完整sku)说明
;
如果要筛选出where
onsite='Y'
行,应将其移动到where
子句中。HAVING
子句用于筛选聚合。另一种解决方案使用分析函数,它比TOP更通用,例如,通过添加分区,您可以获得每组前n名:
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
另一种解决方案是使用分析函数,它比TOP更通用,例如,通过添加分区,可以获得每组的TOP n:
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
非常感谢你的想法。我只是想知道为什么Limit不能使用Teradata。它曾经与MS SQL和MySQL一起工作。Thanks@WeldaSudha
limit
是专有语法,但top
也不是标准SQL。@dnoeth谢谢,这很有意义。这可能是一个愚蠢的问题,但我不记得MySQL中的按列分组过滤器,我只按select语句中的内容分组。你有没有可能再知道一次,谢谢you@WeldaSudha较旧的MySQL版本在聚合方面比较宽松,但在当前版本中已经修复了这一问题。聚合后,groupby
或聚合列中只有那些列(不再有单独的行,因为它们已聚合)。@dnoeth非常感谢您的帮助非常感谢您的想法。我只是想知道为什么Limit不能使用Teradata。它曾经与MS SQL和MySQL一起工作。Thanks@WeldaSudhalimit
是专有语法,但top
也不是标准SQL。@dnoeth谢谢,这很有意义。这可能是一个愚蠢的问题,但我不记得MySQL中的按列分组过滤器,我只按select语句中的内容分组。你有没有可能再知道一次,谢谢you@WeldaSudha较旧的MySQL版本在聚合方面比较宽松,但在当前版本中已经修复了这一问题。聚合后,groupby
或聚合列中只有那些列(不再有单独的行,因为它们已聚合)。@dnoeth非常感谢您的帮助