背景:一些場景下是需要用到分組資料的,比如剛工作那會兒,有一次的需求是統計某個網點的各個職員關於一項任務的推廣情況。又比如我要統計每個部門的人數有多少。這些都需要用到分組資料,分組資料就要使用group by
那group by 用法簡單來說可以分為兩種,一種是直接分組不新增限制條件,第二種就是加上限制條件
測試資料如下:官方給的乙份測試資料
查詢每個部門的人數
如果我要查詢部門人數大於3萬的各部門的人數。這時對部門增加了限制,就要用到限制條件,此時要用h**ing 而不是where。也就是說與group by搭配使用的時h**ing不是group by--統計人數要用count()函式 ,查詢每個部門的人數就要以部門作為分組物件,將部門編號放在group by後面
select count(*) from dept_emp group by dept_no;
-- 增加限制條件時,h**ing要放在分組後面,部門人數大於3萬的表示式為count(dept_no)>30000
使用order by分組時需要注意以下幾點:
與group by配合的關鍵字還有乙個 with rollup ,意思是彙總,將所有分組的資料彙總在一起
比如:和第乙個例子比較,發現多了第十行,第十行就是彙總的資料
如果分組和排序一起用的時候怎麼用呢,比如在第二例子上進行修改。如果我要查詢部門人數大於3萬的各部門的人數,結果降序排列。
Storm累計求和中使用各種分組Grouping
shuffle grouping 隨機分組,隨機派發stream裡面的tuple,保證bolt中的每個任務接收到的tuple數目相同.它能實現較好的負載均衡 fields grouping 按欄位分組,比如按userid來分組,具有同樣userid的tuple會被分到同一任務,而不同的userid則...
Storm累計求和中使用各種分組Grouping
shuffle grouping 隨機分組,隨機派發stream裡面的tuple,保證bolt中的每個任務接收到的tuple數目相同.它能實現較好的負載均衡 fields grouping 按欄位分組,比如按userid來分組,具有同樣userid的tuple會被分到同一任務,而不同的userid則...
MySQL之優化order by和group by
目錄 orderby 優化order by的前提 orderby子句盡量不要產生filesort 如果orderby子句不可避免產生了filesort的優化 總結 groupby 首先我們要做的肯定是把orderby的字段建立成索引 order by盡量使用index方式而不要使用filesort方...