[英]MYSQL- Help making a query
解决了! 感谢您的所有帮助!
如何解决此查询
因此,宠物表的字段是
宠物编号,姓名,员工编号,类型,性别
员工表的字段是
员工编号,姓氏,名字,部门
这是我尝试过但没有起作用的方法:
SELECT First_Name,Last_Name
FROM employees E,pets P
WHERE P.Employee_code=E.Employee_code AND COUNT(Type='C') > Count(Type='D');
我认为您可以尝试以下方法:
SELECT
Employee_code,
Last_Name,
First_Name,
SUM(CASE WHEN Type = 'C' THEN 1 ELSE 0 END) AS CAT,
SUM(CASE WHEN Type = 'D' THEN 1 ELSE 0 END) AS DOG
FROM Employees_TABLE E
JOIN PET_TABLE P ON E.Employee_code = P.Employee_code
GROUP BY Employee_code
HAVING SUM(CASE WHEN Type = 'C' THEN 1 ELSE 0 END) > SUM(CASE WHEN Type = 'D' THEN 1 ELSE 0 END)
好的,您可以尝试以下操作:
SELECT DISTINCT
E.Employee_code, E.Last_Name, E.Department,
(SELECT COUNT(*) FROM pet WHERE Employee_code = E.Employee_code AND Type = 'C') AS cats,
(SELECT COUNT(*) FROM pet WHERE Employee_code = E.Employee_code AND Type = 'D') AS dogs
FROM employee E
LEFT JOIN pet P ON E.Employee_code = P.Employee_code
GROUP BY E.Employee_code
HAVING cats > dogs
就像上一个一样,但是更简单
也许您可以尝试以下方法:
SELECT e.First_Name, e.Last_Name
FROM employees e INNER JOIN pets p ON e.Employee_code = p.Employee_code
WHERE
(SELECT COUNT(*)
FROM pets p1
WHERE p1.Type = 'C' AND p.Employee_code = p1.Employee_code) >
(SELECT COUNT(*)
FROM pets p1
WHERE p1.Type = 'D' AND p.Employee_code = p1.Employee_code)
GROUP BY e.Employee_code;
它可能不是最佳解决方案,但应该可以完成。
select min(e.First_Name), min(e.Last_Name)
from emp e left outer join pets p
on p.Employee_Code = e.Employee_Code
group by e.Employee_Code
having
count(case when Type = 'C' then 1 end) >
count(case when Type = 'D' then 1 end)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.