gpt4 book ai didi

sql - 有没有办法让这个 SQL 更高效?

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:24 24 4
gpt4 key购买 nike

考虑下表:

部门

deptid      (type:INT)
deptname (type: TEXT)
hours (type:INT)
active (type:BIT)

员工

empid       (type:INT)
empname (type: TEXT)
deptid (type: INT)
designation (type: TEXT)
salary (type: INT)

写一个查询来返回属于那些雇员的列 empname 和 deptname人数为 4 人或以上的部门。记录应按 empname 的字母顺序返回

这是我的看法:

SELECT e1.empname, d.deptname from employee AS e1
FULL JOIN department AS d on e1.deptid = d.deptid
WHERE e1.deptid IN(
SELECT deptid FROM(
SELECT e2.deptid, COUNT(e2.empid)
FROM employee AS e2
GROUP BY e2.deptid
HAVING COUNT(e2.empid) >= 4
)
)
ORDER BY empname;

你会如何改进它?

最佳答案

这更短并且可能执行得更快

SELECT e1.empname, d.deptname
from (
SELECT e2.deptid
FROM employee AS e2
GROUP BY e2.deptid
HAVING COUNT(e2.empid) >= 4
) G
inner join employee AS e1 on e1.deptid = G.deptid
INNER JOIN department AS d on d.deptid = G.deptid
ORDER BY e1.empname;

从分组开始。您不需要内部查询中的 COUNT。然后,加入两个表以获取名称。

INNER JOIN 被使用是因为一旦计数完成,我们就已经知道了

  1. 员工存在
  2. 部门存在

关于sql - 有没有办法让这个 SQL 更高效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5021993/

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