簡述問題“統計最新時刻處于某一狀態的設備的數量”
1. 首先子查詢結果,可以看到每個設備最新的狀態資訊

2.1 在子查詢的基礎上,對設備狀態進行分組,進行統計每個狀態的設備數量
2.1.1 可以看到處于'火警'狀態的數量是2,沒有問題,但是看下一張圖

2.1.2 可以看到處于'故障'狀態的數量是(n/a),此處便出現問題,如果你將此值回傳,service層則會報nullpointexception,進行try...catch可以解決

serviceImpl層處理方式

2.2 在子查詢的基礎上,不進行分組,直接統計每個狀態的數量資訊,可以得到正確結果,count如果沒有查詢到資料,則回傳的默認值是0(火警的就不再演示)

結論:
1.子查詢中:group by分組和order by排序如果一起使用的話,進行排序的是分組之后的資料
2.外層查詢:當進行分組之后進行count(*)查詢,當查詢不到時,回傳的默認值是(n/a),需要在邏輯層進行判斷;
不進行分組,使用count(*)查詢,此時查詢不到的話,回傳的默認值是0,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/94431.html
標籤:MySQL
上一篇:MySQL基礎-存盤程序
