我有以下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或标准会很好。
答案 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。谢谢大家!