单个查询中的几个条件计数意外地工作
问题描述:
SELECT HR.name, (SELECT COUNT(*) WHERE Ord.status > 6), (SELECT COUNT(*) WHERE Ord.status < 6)
FROM Ord
JOIN Manager AS Mng ON Mng.person_id = Ord.manager_id
JOIN Person AS HR ON HR.id = Mng.hr_id
GROUP BY HR.id
人力资源经理已经找到他。单个查询中的几个条件计数意外地工作
"CREATE TABLE Manager (person_id INTEGER PRIMARY KEY NOT NULL, hr_id INTEGER)"
我想统计每个HR有多少订单由他的经理做出status > 6
而女巫没有。
查询我写了upper并没有返回正确的结果。 (但返回一些)。
答
你的描述是无法理解的。
您的查询缺少FROM
条款和相关的子查询,以及>
相反会<=
。 你可能想要这样的东西:
SELECT HR.name,
(SELECT COUNT(*)
FROM Ord
WHERE Ord.manager_id IN (SELECT Mng.person_id
FROM Manager as Mng
WHERE Mng.hr_id = HR.id)
AND Ord.status > 6),
(SELECT COUNT(*)
FROM Ord
WHERE Ord.manager_id IN (SELECT Mng.person_id
FROM Manager as Mng
WHERE Mng.hr_id = HR.id)
AND Ord.status <= 6),
FROM Person AS HR
GROUP BY HR.id