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

簡述問題「統計最新時刻處於某一狀態的設備的數量」3d

1. 首先子查詢結果,能夠看到每一個設備最新的狀態信息blog

 

 

 

 

 2.1 在子查詢的基礎上,對設備狀態進行分組,進行統計每一個狀態的設備數量排序

 2.1.1 能夠看處處於'火警'狀態的數量是2,沒有問題,可是看下一張圖io

  

 2.1.2 能夠看處處於'故障'狀態的數量是(n/a),此處便出現問題,若是你將此值返回,service層則會報nullpointexception,進行try...catch能夠解決基礎

  

  serviceImpl層處理方式exception

  

 

 

2.2 在子查詢的基礎上,不進行分組,直接統計每一個狀態的數量信息,能夠獲得正確結果,count若是沒有查詢到數據,則返回的默認值是0(火警的就再也不演示)service

  

 

 

  

結論:im

  1.子查詢中:group by分組和order by排序若是一塊兒使用的話,進行排序的是分組以後的數據統計

  2.外層查詢:當進行分組以後進行count(*)查詢,當查詢不到時,返回的默認值是(n/a),須要在邏輯層進行判斷;數據

        不進行分組,使用count(*)查詢,此時查詢不到的話,返回的默認值是0。

相關文章
相關標籤/搜索