我有表格日志
id status
----------------
SR123 20
SR123 19
SR123 19
SR456 1
SR456 2
SR456 2
表2 status_master
id status
-------------------------
1 Verify Email Success
2 Email verification failed
19 Send SMS Failed
20 Send SMS Success
所以,現在我正在嘗試獲取每個場景的重試次數。預期結果
status count
----------------
19 1
1 1
uj5u.com熱心網友回復:
對我來說,這聽起來像是一個聚合的聚合。嘗試:
SELECT status, [count] = SUM(retries)
FROM (
SELECT status, retries = COUNT(*) - 1
FROM log
GROUP BY id, status
HAVING COUNT(*) >= 2
) G
GROUP BY status
ORDER BY status
結果
| 狀態 | 數數 |
|---|---|
| 2 | 1 |
| 19 | 1 |
我的結果與您的預期結果不同。你的意思是狀態 = 1 在你的結果中是狀態 = 2 嗎?
看到這個 db<>fiddle。
uj5u.com熱心網友回復:
請注意,在您的案例中命名“狀態”之類的列時不要使用關鍵字。
您可能需要使用GROUP BY和COUNT解決您的問題
SELECT tt.id, COUNT(s.id) as count
FROM log s INNER JOIN
status_master tt
ON tt.id = s.status
GROUP BY tt.id;
這是您的問題的小提琴: SqlFiddle
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/435482.html
