MySQL數據庫Group by分組之后再統計數目Count(*)與不分組直接統計數目的區別


簡述問題“統計最新時刻處於某一狀態的設備的數量”

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。

       

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM