SQL GROUP BY對多個字段進行分組


https://www.cnblogs.com/87060524test/p/10402784.html

 

在group中,group by 后面的字段,在select 后面是一定要有的

 group by就是分組,把誰和誰分在一起,然后,在表里去找這個組合中滿足的記錄

 select ACC_B2B..ORDER_Head.OrderSn from ACC_B2B..ORDER_Head
    group by ACC_B2B..ORDER_Head.OrderSn,
             ACC_B2B..ORDER_Head.CreateTime order by CreateTime desc

 

ACTION_TYPE,STATUS_CODE

在select聚合函數里,就可以不用在group里
select COUNT(*) ,ACTION_TYPE,STATUS_CODE,count(STATUS_MESSAGE) as STATUS_MESSAGE  from ACC_MINIEHUB..hubV2_SOConfirmLog group by  ACTION_TYPE ,STATUS_CODE

GROUP BY X意思是將所有具有相同X字段值的記錄放到一個分組里,
GROUP BY X, Y意思是將所有具有相同X字段值和Y字段值的記錄放到一個分組里。

HAVING
當然提到GROUP BY 我們就不得不提到HAVING,HAVING相當於條件篩選,但它與WHERE篩選不同,HAVING是對於GROUP BY對象進行篩選。
以下是引用片段:
SELECT dep.department_name, MAX(emp.salary), MIN(emp.salary)  
FROM departments dep  
LEFT JOIN employees emp  
ON (dep.department_id = emp.department_id)  
GROUP BY dep.department_name  
--order by 的列,必須是出現在group by 子句里的列  
ORDER BY dep.department_name DESC

 這樣可以看出,四個狀態下的SoNumber是多少數量

select Status,COUNT(Number) from SOStatus   group by SOStatus --having      Status='3'

 

 


免責聲明!

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



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