目前我有三個表,分別是:hospital、doctor和test。報告生成時間的計算方法是使用報告時間減去樣本測驗時間。如何撰寫查詢以找出哪家醫院的平均報告生成時間最短?
表名: hospital
|姓名|
| 'A' | | '乙' | | 'C' |
表名: doctor
| ID | 醫生姓名 | 醫院名稱 |
|---|---|---|
| 1 | '埃里克' | '一種' |
| 2 | '彼得' | '一種' |
| 3 | “山姆” | '乙' |
| 4 | '公園' | '乙' |
| 5 | '艾倫' | 'C' |
| 6 | '安德魯' | 'C' |
表名: test
| ID | 測驗日期 | 測驗時間 | 報告日期 | 報告時間 | 醫生_id |
|---|---|---|---|---|---|
| 1 | '2021-10-9' | '19:30:00' | '2021-10-9' | '23:30:00' | 1 |
| 2 | '2021-10-9' | '14:00:00' | '2021-10-9' | '22:20:00' | 2 |
| 3 | '2021-10-9' | '20:30:00' | '2021-10-10' | '08:00:00' | 3 |
| 4 | '2021-10-10' | '07:30:00' | '2021-10-10' | '13:10:00' | 4 |
| 5 | '2021-10-10' | '09:30:00' | '2021-10-10' | '13:30:00' | 5 |
| 6 | '2021-10-10' | '11:00:00' | '2021-10-10' | '22:00:00' | 6 |
| 7 | '2021-10-10' | '15:20:00' | '2021-10-10' | '19:00:00' | 1 |
| 8 | '2021-10-11' | '08:00:00' | '2021-10-11' | '20:00:00' | 4 |
表'doctor'中的列hospital_name參考hospital.name,表'test'中的列doctor_id參考doctor.id
預期結果:
hospital_name 'A'
說明:從'test'表中我們可以得到'A'醫院的平均報告生成時間為320分鐘,因為'A'醫院有3條記錄(id為1和2的醫生),平均報告生成時間為320分鐘醫院'B'的時間是1630 / 3分鐘,因為有關于醫院'B'的三個記錄(id為3和4的醫生),并且醫院'C'的平均報告生成時間是450分鐘,因為有兩個記錄關于醫院“C”(id 為 5 和 6 的醫生)。因此,答案是醫院“A”。
select TIMESTAMPDIFF(minute, timestamp(test_date,test_time),
timestamp(report_date, report_time)) from test as t
inner join doctor as d
on t.doctor_id = d.id
inner join hospital as h
on d.hospital_name = h.name;
我不知道如何找到平均生成時間
uj5u.com熱心網友回復:
select h.name as hospital_name, count(t.id) as total_tests, SUM(TIMESTAMPDIFF(minute, timestamp(test_date,test_time),
timestamp(report_date, report_time))) as total_time, (SUM(TIMESTAMPDIFF(minute, timestamp(test_date,test_time),
timestamp(report_date, report_time)))/count(t.id)) as avg_time from test as t
inner join doctor as d
on t.doctor_id = d.id
inner join hospital as h
on d.hospital_name = h.name group by h.id
uj5u.com熱心網友回復:
執行查詢后,你可以得到這些結果,檢查它們
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/367611.html
標籤:mysql
上一篇:在查詢中使用臨時表
下一篇:計算SQL中新增陽性病例的增加
