【发布时间】:2021-09-09 20:40:09
【问题描述】:
我正在努力获取所有销量超过 100000 的人的emp_id。
此查询返回所有员工及其销售额:
SELECT SUM(total_sales), emp_id
FROM works_with
GROUP BY emp_id;
这样的事情是行不通的:
SELECT emp_id
FROM works_with
WHERE SUM(total_sales), emp_id
GROUP BY emp_id > 100000;
我需要使用嵌套查询吗?
【问题讨论】:
-
SQL 解析器无法猜测
emp_id > 100000的含义。直接阅读本文并想象自己是一个 DBMS:它是否应该按评估条件分组(所有true转到一个组,所有false转到另一个组),它是否应该按emp_id分组,然后只选择那些谁的 id 大于 10000?如果有另一个聚合函数,它如何发现它需要过滤掉求和的total_sales? “如果我是 DBMS 会怎样”是解决很多问题的一个很好的起点
标签: sql oracle group-by aggregation