gpt4 book ai didi

SQL查询员工数据库

转载 作者:行者123 更新时间:2023-12-01 01:57:44 24 4
gpt4 key购买 nike

我想找到支付总薪水最少的公司。

详情如下,

works( empid, companyname, salary )

我的查询看起来像,

SELECT COMPANYNAME 
FROM WORKS
WHERE SALARY=
(SELECT MIN(SUM(SALARY))
FROM
(SELECT SUM(SALARY)
FROM WORKS
GROUP BY COMPANYNAME)
GROUP BY COMPANYNAME);

但这不会返回任何行。

我刚接触SQL,所以希望您能用通俗易懂的方式回复我。

最佳答案

您的查询没有返回任何行,因为您正在查找原始表中的行,有效。在该表中,您没有任何公司支付的 薪水,只有个别员工的薪水,因此查询当然不会返回任何行。没有一个员工的工资达到公司最低工资总额。

有很多方法可以解决这个问题,但由于您是初学者,您应该只寻找使用基本 SQL 语句的解决方案(即使您不会在生产中使用这样的解决方案)。您现在的目标是了解 SQL 的工作原理,而不是获得最快或最先进的解决方案。

话虽如此:首先,您需要创建一个查询,按公司对行进行分组,然后选择总工资最低的公司(或多个公司,如果并列第一)。为此,您需要像之前那样使用 GROUP BY。然后,要从 GROUPS 中选择(而不是从原始行中),您需要使用 HAVING 子句,而不是 WHERE 子句。像这样:

select   companyname, sum(salary) as total_salary
from works
group by companyname
having sum(salary) = ( select min(sum(salary))
from works
group by companyname
)
;

另请注意,SQL 允许您将聚合函数包装在另一个聚合函数中 - 您可以直接针对原始表编写 select min(sum(salary))。这在我的子查询中有说明;与您最初尝试时的结果进行比较。

关于SQL查询员工数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39053740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com