【发布时间】:2021-10-29 06:53:57
【问题描述】:
我有一个带有用户 ID 列的表现金返还,以及“食品”、“部门”等现金返还类别 我想要计算每个用户 ID 的返现类别 所以我使用了 COUNT(cashback.report_store_categoryname) 作为 Total_AOV 现在也想占它的百分比 所以我使用了 Total_AOV*100/SUM(Total_AOV)
SELECT
cashback.userid, COUNT(cashback.report_store_categoryname) as Total_AOV,
CAST(CASE WHEN Total_AOV*100/SUM(Total_AOV)>50 THEN 1 ELSE 0 END AS bit) as per
FROM cashback
WHERE cashback_status = 'Confirmed'
GROUP BY cashback.userid
LIMIT 10;
但这给了我一个错误
OUTPUT:聚合函数调用可能没有嵌套聚合或 窗口函数
【问题讨论】:
-
您不能在定义的同一个 SELECT 列表中引用 Total_AOV。
-
解析器应该如何知道,您需要在所有行上总结
Total_AOV,但不是在group by的上下文中? -
可能想要标记您的 DBMS,因为您的查询原样会导致至少在 MSSQL 中出现语法错误(我假设其他人)。甚至没有产生你的聚合函数错误。我也不清楚你真正想用你的演员/案例陈述实现什么,因为你不会从中得到一个百分比。这是肯定的。
-
那我怎样才能得到它
-
建议解决方案
标签: sql group-by count sum percentage