mysql - 内部连接 ​​3 个表并计算字段的平均值

标签 mysql

有3张表:

  1. 医务人员:
    • IDM (id_medic)(主键)
    • 名字
    • 第二个名字
    • 专业
  2. 患者:
    • IDP (id_patient)(主键)
    • 姓名
    • DOB(出生日期)
  3. 访问:
    • 编号
    • id_medic
    • id_patient

我想找出每个专科患者的平均年龄

SELECT specialty, AVG(year(curdate()) - year(patients.DOB))
FROM medics, patients, visits 
WHERE medics.IDM = visits.medics GROUP by specialty;

上面的查询在每一行上显示了所有患者的平均值。

最佳答案

试一试:

SELECT
Speciality,
ROUND(AVG(YEAR(NOW())-YEAR(DOB)),0) AS Years
FROM visits

INNER JOIN medics
ON visits.IdMedic = medics.Id

INNER JOIN patients
ON visits.IdPatient = patients.Id

GROUP BY Speciality

我的表:

CREATE TABLE `visits` (
  `Id` int(11) NOT NULL,
  `IdMedic` int(11) DEFAULT NULL,
  `IdPatient` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `patients` (
  `Id` int(11) NOT NULL,
  `Name` varchar(45) DEFAULT NULL,
  `DOB` date DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `medics` (
  `Id` int(11) NOT NULL,
  `Name` varchar(45) DEFAULT NULL,
  `Speciality` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

关于mysql - 内部连接 ​​3 个表并计算字段的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35205103/

相关文章:

php - 如何创建带有毫秒的Mysql unix_timestamp

php - 如何结合 SELECT 和 RADIO 来显示数据

python - 从远程数据库获取 UTF8 字符串

php - 在 bool 值上调用成员函数 bind_param()(MySQLi 未运行)

mysql - 搜索 MySQL 中的哪些表包含带有空 ENUM 的行

mysql - 从 Microsoft SQL Server 到 MySQL 的转换

c# - 我的游戏在线高分

mysql - 从所有表的 MySQL 数据库中删除所有零日期

c# - 获取和设置 MySQL 选择

python - 使用 SqlAlchemy 在 Python 中检索外键映射对象