簡體   English   中英

內連接 3 個表並計算一個字段的平均值

[英]Inner join 3 tables and calculate the average value on a field

有3張表:

  1. 醫務人員:
    • IDM (id_medic)(主鍵)
    • 第一個名字
    • 第二名
    • 專業
  2. 耐心:
    • IDP (id_patient)(主鍵)
    • 姓名
    • DOB(出生日期)
  3. 訪問:
    • ID
    • id_medic
    • 病人身份

我想找出每個專科患者的平均年齡

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM