SQL语句,子查询计数?

时间:2011-08-15 14:09:55

标签: sql hql criteria

我有以下SQL表

|name|employees|

员工

|name|gender|type|dead |
|John|male  |good|yes  |
|Mary|female|bad |no   |
|Joe |male  |ugly|maybe|

我想写一个返回

的语句
| type | n of employees | n of male employees | n of departments |

我有

SELECT e.type, count(e), count(d) 
FROM Department d 
JOIN d.employees e
WHERE e.dead = maybe 
GROUP BY e.type

当然,那就是错过了“男性雇员”。我被困在这里,因为我不确定,在哪里指定附加条款e.gender = male。

我忘了提及:HQL或标准会很好。

2 个答案:

答案 0 :(得分:3)

假设您的原始查询和架构正确无误:

SELECT 
   e.type, 
   count(e), 
   count(d), 
   count (case when gender = 'male' then 1 else NULL end) AS NumberOfMaleEmployees
from Department d 
JOIN d.employees e
WHERE e.dead = 'maybe' 
GROUP BY e.type

答案 1 :(得分:2)

仅供参考:

SELECT 
   e.type, 
   count(e), 
   count(d), 
   sum(case when gender = 'male' then 1 else 0 end)
from Department d 
JOIN d.employees e
WHERE e.dead = 'maybe' 
GROUP BY e.type

适用于HQL。谢谢大家!