繁体   English   中英

MySQL max 和 count 聚合函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM