我有一張這樣的桌子
這只是我的桌子的一個樣本
| ID | PRSNO | 數量 | DESC | 狀態 |
|---|---|---|---|---|
| 1 | 測驗1 | 1 | 筆 | 準時 |
| 2 | 測驗1 | 1 | 橡皮 | 延遲 |
| 3 | 測驗1 | 1 | 剪刀 | 準時 |
| ID | PRSNO | 數量 | DESC | 狀態 |
|---|---|---|---|---|
| 4 | 測驗2 | 1 | 筆 | 延遲 |
| 5 | 測驗2 | 1 | 筆記本 | 延遲 |
| 6 | 測驗2 | 1 | 彭特爾彭 | 延遲 |
| ID | PRSNO | 數量 | DESC | 狀態 |
|---|---|---|---|---|
| 7 | 測驗3 | 1 | 筆 | 準時 |
| 8 | 測驗3 | 1 | 筆記本 | 準時 |
| 9 | 測驗3 | 1 | 彭特爾彭 | 延遲 |
| 9 | 測驗3 | 1 | 彭特爾彭 | 延遲 |
| ID | PRSNO | 數量 | DESC | 狀態 |
|---|---|---|---|---|
| 7 | 測驗4 | 1 | 鍵盤 | 延遲 |
| 8 | 測驗4 | 1 | 老鼠 | 準時 |
| 9 | 測驗4 | 1 | 監視器 | 延遲 |
| 9 | 測驗4 | 1 | 中央處理器 | 延遲 |
但我的問題是我想這樣顯示
| PRSNO | 狀態 |
|---|---|
| 測驗1 | 準時 |
| 測驗2 | 延遲 |
| 測驗3 | 準時 |
| 測驗4 | 延遲 |
我只知道如何區分 PRSNO 但我不知道如何計算 if Ontime <= Delay
Ontime else Delay的狀態
我的代碼僅用于不同的
SELECT DISTINCT PRSNO FROM prsystem
uj5u.com熱心網友回復:
您可以嘗試使用聚合條件函式按列比較Ontime計數DelaySTATUS
查詢 #1
SELECT PRSNO,
CASE WHEN
COUNT(CASE WHEN STATUS = 'Ontime' THEN 1 END) >=
COUNT(CASE WHEN STATUS = 'Delay' THEN 1 END) THEN 'Ontime'
ELSE 'Delay' END STATUS
FROM prsystem
GROUP BY PRSNO;
| PRSNO | 狀態 |
|---|---|
| 測驗1 | 準時 |
| 測驗2 | 延遲 |
| 測驗3 | 準時 |
| 測驗4 | 延遲 |
在 DB Fiddle 上查看
uj5u.com熱心網友回復:
您可以使用GROUP BYwith SUM:
SELECT PRSNO, IF(SUM(IF(STATUS = 'Ontime', 1, -1)) >= 0, 'Ontime', 'Delay') STATUS
FROM prsystem GROUP BY 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/428860.html
