如何通过最早的日期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));