我需要找到提供最多服务的机组负责人。我有下表:
CREATE TABLE JasperGreen.PROVIDED_SERVICE (
PROVISION INT AUTO_INCREMENT NOT NULL,
CONTRACT_ID INT NOT NULL,
PROVISION_DATE DATE NOT NULL,
CREW_CHIEF INT NOT NULL,
CUST_ID INT NOT NULL,
CONSTRAINT PROVIDED_SERVICE_FK1 FOREIGN KEY(CUST_ID) REFERENCES CUSTOMER(CUST_ID),
CONSTRAINT PROVIDED_SERVICE_FK2 FOREIGN KEY(CONTRACT_ID) REFERENCES CONTRACTED_SERVICE(CONTRACT_ID),
CONSTRAINT PROVIDED_SERVICE_PK PRIMARY KEY (PROVISION)
);
到目前为止,我运行了此查询并返回错误:
SELECT CREW_CHIEF, COUNT(provision)
FROM PROVIDED_SERVICE
WHERE provision =
(SELECT MAX(COUNT(provision)) FROM PROVIDED_SERVICE)
错误1111:无效使用组功能。
有什么想法吗?
答案 0 :(得分:1)
select CREW_CHIEF, count(provision)
from PROVIDED_SERVICE
GROUP BY CREW_CHIEF
ORDER BY count(provision) DESC
LIMIT 1
您无法嵌套MAX
和COUNT
。如果你想使用你的方法,需要通过
select CREW_CHIEF, count(provision)
from PROVIDED_SERVICE
group by CREW_CHIEF
HAVING count(provision) =
(select count(provision)
from PROVIDED_SERVICE
group by CREW_CHIEF
order by count(provision) desc
limit 1
)
编辑:
蒂姆指出。第一个查询返回一个随机厨师,以防万一。第二个返回所有厨师与最大数量的关系。
答案 1 :(得分:0)
SELECT CREW_CHIEF, COUNT(*) AS cnt
FROM PROVIDED_SERVICE
GROUP BY CREW_CHIEF
HAVING COUNT(*) = (
SELECT MAX(cnt) FROM (
SELECT COUNT(*) AS cnt FROM PROVIDED_SERVICE GROUP BY CREW_CHIEF) t );