如何通过最早的日期sql获取平均值?

如何通过最早的日期sql获取平均值?,sql,oracle,Sql,Oracle,这是我的桌子: CREATE TABLE Consultation ( idConsultation number, dateConsultation date NOT NULL, prixConsultation number(4,2), pouls number(3), size number(3), poids number(3), pressionSystolique number(3), pressionDiastolique number(3), idMedecin number(3

这是我的桌子:

CREATE TABLE Consultation (
idConsultation number,
dateConsultation date NOT NULL,
prixConsultation number(4,2),
pouls number(3),
size number(3),
poids number(3),
pressionSystolique number(3),
pressionDiastolique number(3),
idMedecin number(3),
idPatient number(3),
);
患者可以多次出现在此表中,并且会诊有日期

因此,我希望得到平均规模,并尊重这样一个事实,即我们只能对每位患者采用较旧的咨询日期

提前谢谢,这是我带来的,但没有工作

SELECT AVG(size)
FROM Consultation
WHERE dateConsultation = (SELECT MAX(dateConsultation) FROM Consultation);

您希望首先获得每个
idPatient
max(dateConsultation)
,然后使用该值筛选您的
avg(size)
选择。您可以使用子查询和
内部联接来执行此操作:

select avg(c.size) as avgSizeLatestConsultation
from Consultation as c
    inner join (select
                    idPatient,
                    max(dateConsultation) as LatestConsultation
                from Consultation
                group by
                    idPatient) as d
         on d.idPatient = c.idPatient
         and d.LatestConsultation = c.dateConsultation
鉴于此测试数据:

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(1,  10, TO_DATE('01-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(2,  10, TO_DATE('02-FEB-2015', 'DD-MON-YYYY'), 3);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(3,  11, TO_DATE('03-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(4,  12, TO_DATE('04-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(5,  13, TO_DATE('05-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(6,  13, TO_DATE('06-FEB-2015', 'DD-MON-YYYY'), 2);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(7,  13, TO_DATE('07-FEB-2015', 'DD-MON-YYYY'), 3);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(8,  14, TO_DATE('08-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(9,  15, TO_DATE('09-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(10, 15, TO_DATE('10-FEB-2015', 'DD-MON-YYYY'), 12);
以下查询生成正确的结果(
AVG_SIZE=1
):


分享和享受。

taille
在哪里?请澄清,您想要某个条件还是对结果进行聚合?不太清楚您在这里要问什么,也许您可以显示一些示例数据和预期结果集。较旧的日期将是MIN(DateColumn),MAX(DateColumn)将为您提供最新的日期。另外,如果您选择一个最早或最晚日期的值,则平均值将是该值本身,不确定您试图通过该值实现什么。在这种情况下,我已正确回答了您的问题。FROM关键字not found where expected?Oracle,SQL developer
INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(1,  10, TO_DATE('01-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(2,  10, TO_DATE('02-FEB-2015', 'DD-MON-YYYY'), 3);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(3,  11, TO_DATE('03-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(4,  12, TO_DATE('04-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(5,  13, TO_DATE('05-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(6,  13, TO_DATE('06-FEB-2015', 'DD-MON-YYYY'), 2);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(7,  13, TO_DATE('07-FEB-2015', 'DD-MON-YYYY'), 3);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(8,  14, TO_DATE('08-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(9,  15, TO_DATE('09-FEB-2015', 'DD-MON-YYYY'), 1);

INSERT INTO CONSULTATION (IDCONSULTATION, IDPATIENT, DATECONSULTATION, "size")
  VALUES(10, 15, TO_DATE('10-FEB-2015', 'DD-MON-YYYY'), 12);
SELECT AVG("size") AS AVG_SIZE
  FROM CONSULTATION
  WHERE IDCONSULTATION IN (SELECT IDCONSULTATION
                             FROM CONSULTATION
                             WHERE (IDPATIENT, DATECONSULTATION) IN
                               (SELECT IDPATIENT, MIN(DATECONSULTATION) AS DATECONSULTATION
                                  FROM CONSULTATION
                                  GROUP BY IDPATIENT));