![](/img/trans.png)
[英]I want to use max and count aggregate functions together in mysql query
[英]MySQL max and count aggregate functions
所以我有三张桌子
CREATE TABLE Personnel(
IdPersonnel INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(45) NOT NULL,
Surename VARCHAR(45) NOT NULL,
Department VARCHAR(45) NOT NULL,
Salary INT NOT NULL,
Birthday DATE NOT NULL
);
CREATE TABLE Doctor(
IdDoctor INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
fk_Personnel INT NOT NULL
);
CREATE TABLE Visit(
IdVisit INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Date DATE NOT NULL,
ControlDate DATE,
fk_Patient INT NOT NULL,
fk_Doctor INT NOT NULL,
);
从这三个表中,我需要找到一位访问次数最多的医生。
SELECT p.Name, p.Surname, COUNT(*) visits
FROM Visit v
JOIN Doctor d
ON v.fk_Doctor = d.IdDoctor
JOIN Personnel p
ON d.fk_Personnel = p.IdPersonnel
GROUP BY d.IdDoctor
ORDER BY COUNT(*) DESC
LIMIT 1;
我使用了这个查询,结果是正确的,但我必须使用 MAX() function。我正在使用 MySQL 社区服务器 8.0.26
select P.Name, P.Surename, P.IdPersonnel ,count(*) from Visit V
inner join Doctor D on V.fk_Doctor = D.IdDoctor
inner join Personnel P on D.fk_Personnel = P.IdPersonnel
group by P.Name, P.Surename, P.IdPersonnel
having count(*) = (
select max(visits) from
(select fk_Doctor, count(*) visits from Visit group by fk_Doctor) a
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.