繁体   English   中英

MYSQL-帮助进行查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM