【问题标题】:How do I find out the Top N diseases according to the cost of their treatment?如何根据治疗费用找出 Top N 疾病?
【发布时间】:2015-03-18 17:35:08
【问题描述】:

这是我迄今为止尝试过的

SELECT DISTINCT 
    RECORDS.TOTAL_COST, DISEASE.DISEASE_ID
FROM 
    RECORDS, DISEASE
WHERE 
    DISEASE.DISEASE_ID = RECORDS.DISEASE_ID 
    AND TREATMENT.TREATMENT_ID = RECORDS.TREATMENT_ID
GROUP BY 
    DISEASE.DISEASE_NAME

这是所提供数据的星型模式

Treatment

CREATE TABLE treatment
(
    treatment_id NUMBER(6),
    treatment_type VARCHAR2(30),
    private_cost NUMBER(8,2),
    public_cost NUMBER(8,2),
    description VARCHAR
)

创建记录事实表

CREATE TABLE records
(
    patient_id NUMBER(6),
    doctor_id NUMBER(6),
    disease_id NUMBER(6),
    treatment_id NUMBER(6),
    time_id DATE,
    side_effects NUMBER(1),
    effectivness NUMBER(1),
    total_cost NUMBER(8,2)
 );

为所有维度表创建外键

ALTER TABLE records
ADD ( CONSTRAINT records_patients_fk FOREIGN KEY (patient_id) REFERENCES patients,
 CONSTRAINT records_doctors_fk FOREIGN KEY (doctor_id) REFERENCES doctors,
 CONSTRAINT records_disease_fk FOREIGN KEY (disease_id) REFERENCES disease,
 CONSTRAINT records_treatment_fk FOREIGN KEY (treatment_id) REFERENCES treatment,
 CONSTRAINT records_times_fk FOREIGN KEY (time_id) REFERENCES times); 

CREATE TABLE disease
(
    disease_id NUMBER(6),
    disease_name VARCHAR2(30) 
);  

【问题讨论】:

  • 你很接近,在Total cost 上使用order by desc 并使用LIMIT N 获得top N 或者你也可以使用RowNum 获得top n

标签: sql oracle oracle11g oracle-sqldeveloper data-warehouse


【解决方案1】:

假设第一个查询中返回的数据除了只需要前 N 个项目之外大部分是正确的:

SELECT TOTAL_COST, DISEASE_ID
FROM
(
   SELECT DISTINCT RECORDS.TOTAL_COST, DISEASE.DISEASE_ID
   FROM RECORDS, DISEASE
   WHERE DISEASE.DISEASE_ID=RECORDS.DISEASE_ID AND
   TREATMENT.TREATMENT_ID=RECORDS.TREATMENT_ID
   GROUP BY DISEASE.DISEASE_NAME
   ORDER BY RECORDS.TOTAL_COST DESC
)
WHERE ROWNUM <= 5; -- replace 5 with however many you want.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多