我正在努力為每個作者選擇狀態的最大值計數。我有一個日志資料庫,用于保存對票證的所有更改 - 從發送、接受到解決。
資料正在由存盤程序上傳。
當有人發送一張票時,它收到狀態 0,當有人接受它時,它會得到 1,當它完成時它會得到 2,當它被拒絕時它會得到 5。我想獲得員工的統計資訊,他們已經完成了多少票,他們做了多少已經接受等
所以它將是每個ticket_id 的最大值。
資料庫看起來像這樣:
| 票證_ID | 變化的作者 | 工單狀態 |
|---|---|---|
| 176 | 安德烈·波勒羅維奇 | 2 |
| 176 | 彼得·維爾茨比基 | 0 |
| 175 | 安德烈·波勒羅維奇 | 2 |
| 175 | 米羅斯瓦夫·帕蒂克 | 0 |
| 174 | 塞巴斯蒂安·維切克 | 0 |
| 173 | 安德烈·波勒羅維奇 | 2 |
| 173 | 馬里烏什·馬利 | 0 |
| 172 | 安德烈·波勒羅維奇 | 2 |
| 172 | 馬特烏斯·高洛夫斯基 | 0 |
每次向表中添加新行時,也有時間戳記。
資料庫按 ticket_id desc 和 status desc 排序

我知道我必須計算每個 ticket_id 的最大狀態,但我真的不知道如何正確設定。
select autor_of_changes, count(ticket_status) as statusiki from aa_ticketing_app_log
group by autor_of_changes
order by statusiki desc, autor_of_changes desc
我沒有其他想法,但是這個給了我一個錯誤:
無法對包含聚合或子查詢的運算式執行聚合函式。
很想得到一些幫助或提示,非常感謝!
uj5u.com熱心網友回復:
作為“最終統計資料”,我們向每位 員工展示了處理的工單數量,按工單型別分類。使用 ' Case... When' 陳述句。
[結果]

[代碼]
select autor_of_changes,
count(CASE WHEN ticket_status=0 then 1 END) as 'Received' ,
count(CASE WHEN ticket_status=1 then 1 END) as 'Accepted' ,
count(CASE WHEN ticket_status=2 then 1 end) as 'Done' ,
count(CASE WHEN ticket_status=5 then 1 END) as 'Declined',
COUNT(ticket_status) as 'All_tickets'
from aa_ticketing_app_log
group by autor_of_changes
order by All_tickets desc
uj5u.com熱心網友回復:
SELECT autor_of_changes
, ticket_status
, COUNT(ticket_status) OVER (PARTITION BY autor_of_changes, ticket_status
ORDER BY ticket_status DESC)
, ROW_NUMBER() OVER(PARTITION BY autor_of_changes, ticket_status
ORDER BY ticket_status DESC) AS status_rank
FROM aa_ticketing_app_log
WHERE status_rank = 1
;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331609.html
標籤:sql
上一篇:根據ID和日期識別新資料
下一篇:插入查詢中復選框狀態的插入引數
