mysql - 如何使用总和处理 SQL 子查询
问题描述
我正在对 MySQL 中的示例数据库进行查询。
我有一个主键为emp_id的员工表。
我有一个带有emp_id和client_id复合键的works_with表。它还有一个total_sales列。
我正在尝试编写一个查询,该查询返回总销量超过 100,000 的任何员工的姓名。
我能够返回员工 ID 和总计超过 100,000 的总和,如下所示:
SELECT SUM(total_sales) AS total_sales, emp_id
FROM works_with
WHERE total_sales > 100000
GROUP BY emp_id;
但我不确定如何使用它来获取员工姓名。我尝试过嵌套查询,但没有运气。例如,当我尝试这个时:
SELECT first_name, last_name
FROM employee
WHERE emp_id IN (
SELECT SUM(total_sales) AS total_sales, emp_id
FROM works_with WHERE total_sales > 100000
GROUP BY emp_id
)
我收到错误 1241:操作数应包含 1 列。我相信这是因为我在嵌套查询中选择了两列?那么我将如何处理这个问题呢?
解决方案
只是join
:
select sum(w.total_sales) as total_sales, e.first_name, e.lastnmae
from works_with w
inner join employee e on e.emp_id = w.emp_id
group by e.emp_id
having sum(w.total_sales) > 10000;
请注意,我使用了having
子句而不是where
子句:大概,您想要对每个员工的所有销售额求和,并过滤该结果。您的原始查询仅对大于 100000 的单个值求和。
推荐阅读
- php - Wordpress - 用双引号包裹我的二进制文件
- python - 如何在 Python 中检测子进程的 ASAN (Address Sanitizer) 错误?
- ios - 如何将 NSlayout 约束转换为整数?
- angular - monorepo 中的ngrx“ReducerManager 没有提供者”
- angular - 角度可访问性和跳到导航链接
- spring - 在@configuration中添加一个hibernate sessionFactory的bean casues:“考虑在你的配置中定义一个名为'entityManagerFactory'的bean。”
- excel - 如何在旧版本的 Excel 中替换 TEXTJOIN()?
- mysql - GROUP CONCAT 和 LEFT OUTER JOIN 拆分
- lead - TikTok 潜在客户生成 - 错误轮询下载任务
- c++ - 无法使用 cv::VideoCapture 打开 .mp4