MySQL數據庫下統計記錄數小於指定數值的數據


  樓主在做一個智慧工地的產品,需要對工人進行一些數據統計,比如要統計導入人員數量小於30的工地,SQL應該怎么寫呢?
  首先了解一下數據結構,工地分三張表,四級層級關系,Organization表存儲區域、城市兩級,Projects表存儲項目,Stages表存儲分期;還有一個worker表存儲人員。這4張表外鍵分別保存的上級表的id。
  要查出工人小於30的工地大體步驟如下:
  1、找出小於30人的工地分期id;
  2、根據分期id外連接查出對應的工地全稱;
  3、根據工地的4級進行分組排序。

  具體SQL如下:

SELECT
    org.NAME 區域名稱,
    city.NAME 城市名稱,
    pr.projectName 項目名稱,
    st.stageName 分期名稱,
    ws.wcount 工人數量 
FROM
    Stages st
    LEFT JOIN Projects pr ON st.projectMdid = pr.projectMdid
    LEFT JOIN Organization city ON city.mdid = pr.bizOrgMdid
    LEFT JOIN Organization org ON org.mdid = city.parentMdid
    LEFT JOIN ( SELECT w.stageMdid stageMdid, count( * ) wcount FROM worker w WHERE w.deleteflag = 0 GROUP BY w.stageMdid ) ws ON st.stageMdid = ws.stageMdid 
WHERE
    st.stageMdid IN ( SELECT w.stageMdid FROM worker w WHERE w.deleteflag = 0 GROUP BY w.stageMdid HAVING COUNT( * ) < 30 ) 
ORDER BY
    org.NAME,
    city.NAME,
    pr.projectName

  查出的數據:

 

   當然了,SQL有可以優化的地方,因為只是線下查詢一下,對效率沒有要求,樓主就這么按照思路寫的流水賬。


免責聲明!

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



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