1. 程式人生 > >SQL 統計分組 Group By和Compute By的整理

SQL 統計分組 Group By和Compute By的整理

在日常的專案開發中資料統計方面大家都常常用到Groub By進行分組,可能很少人用Compute By吧,我今天也是第一次使用,以前沒有寫部落格的習慣,只是把自己的經驗都整理起來都儲存到了YX筆記當中,就從這一篇開始吧,把自己的一些經驗寫出來,一方面可以讓自己再梳理下以前的知識。本人菜鳥,大牛勿噴,不喜勿入!從不在意什麼排名,也不在意什麼評論的數量,any way,走我自己的路管你那麼多!

好了,進入正題,比如說專案中你需要按類別統計商品的總價,或者因為多表連線之後你出現了重複的資料(當然你可以用開窗函式),貌似我想不出來還有其他的作用了,畢竟本人就是菜鳥一枚,有大牛知道的話能告知下。例:

有如下的商品資料:

想要按照類別檢視價格的總和,ok!

Select t.GoodsType,SUM(t.Price)
From T_Goods t
Group By t.GoodsType
得到的結果

Group By就是分組,根據Group By後的欄位名就行分組,若有多個欄位就先根據第一個欄位分組,再在滿足第一個欄位的子集中按照第二個欄位再進行分組,依次類推。

再看看這個:

Select t.GoodsType,SUM(t.Price),t.Remark
From T_Goods t
Group By t.GoodsType,t.Remark

,這兩個例子可以清楚的瞭解Group By 多個欄位了吧!

這裡插播一個知識點,我們大家都知道Group By 可以跟Having 和Where 連用,但是兩者是有細微區別的,請看這段

Select t.GoodsType,SUM(t.Price) TotalPrice
From T_Goods t
Where t.Price>=20
Group By t.GoodsType
--Having SUM(t.Price) >=20
使用where的結果 VS Having的結果:
VS 

當然有些資料兩個查詢結果是相同的,但是兩者確確實實地存在區別的,構造出這個資料我也試了幾次,

where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾資料,where條件中不能包含聚組函式,使用where條件過濾出特定的行。而having 子句的作用是篩選滿足條件的組,即在分組之後過濾資料,條件中經常包含聚組函式,使用having 條件過濾出特定的組,也可以使用多個分組標準進行分組。

而Compute By 也是分組,與Group By的區別在於Compute By 可以顯示出細節:

請看

Select * 
from T_Goods t
Order By t.GoodsType
Compute Max(t.Price),Min(t.Price),AVG(t.Price) By t.GoodsType

說實話我現在也沒有在專案中用過Compute By,下面的統計行和資料行是什麼關係,我也不是很清楚,求大神告知!

相關推薦

SQL 統計分組 Group ByCompute By整理

在日常的專案開發中資料統計方面大家都常常用到Groub By進行分組,可能很少人用Compute By吧,我今天也是第一次使用,以前沒有寫部落格的習慣,只是把自己的經驗都整理起來都儲存到了YX筆記當中,就從這一篇開始吧,把自己的一些經驗寫出來,一方面可以讓自己再梳理下以前的

關於sql當中的group by partition by 的區別。

的區別 輸出 sel color 輸出類型 區別 inf col code 今天在做一個實驗的時候碰到了關於group by 和partition by 的區別,簡單的總結一下。 實驗的題目是,按照類型進行分組,然後對其金額進行累加。然後輸出類型對應的金額總和:

在mysql中使用group byorder by取每個分組中日期最大一行資料

轉載自:https://blog.csdn.net/shiyong1949/article/details/78482737 自己實際使用的時候group by 單列欄位 兩種方式獲取資料一致,博主情況未知,有待驗證多group by  在mysql中使用group by進行分組後取某一列的最大

sql (2)——group by order by

group by() 一般和 count(), sum(), avg() 三種聚合函式一起使用才有意義,而且可以多欄位使用。例如: SELECT Customer, SUM(OrderPrice) FROM Orders GROUP BY Customer order by()  列 AS

MySQL——關於MySQL分組查詢group byorder by獲取最新時間內容的方法

假如現在有一張表table,如下: 如果我們想查詢出來zhang和wang最新日期的記錄 如果我們直接使用: SELECT * FROM table GROUP BY name ORDER BY

GROUP BY ORDER BY一起使用時,要註意的問題!

聚合 pan csdn under line order 註意 net asp 轉:http://blog.csdn.net/haiross/article/details/38897835 註意:ORDER BY 子句中的列必須包含在聚合函數或 GROUP BY 子句中。

mysql中group byorder by同時使用無效的替代方案

前言 最近一年由於工作需要大部分使用的都是NoSql資料庫,對關係型資料庫感覺越來越陌生,一個由group by和order by 引發的血案由此而生。在此做個記錄,以備不時之需。 需求(得到所有barCode的最新的一條資料) 首先,看一下整體的表結構。 

group by orede by

同時使用時,先group by再orede by, 所以要獲取最新的資訊,就要先max(time)再group by, 例子 SELECT `content`, `dialogue_content`.`fuserid` AS `fuserid`, `read

Mysql之group by order by 一起用時的排序問題

業務需求,需要查詢表裡不同分類下的order最大的記錄。 查看錶中的記錄: SELECT id,tid,`order`, FROM_UNIXTIME(yestime) FROM tfen WHERE tid IN(7512, 7514) ORDER BY `order` DESC ;

mysql中group byorder by同時使用無效 group_concat

                                          &nb

mysql 用 group by order by同時使用

首先,這是不可能實現的 mysql的查詢的順序 select -> from-> where->group by->having->order by. 但mysql的解析器執行順序: from-> where->group by->having->

關於Mysql使用group byorder by函式

這兩個函式在sql中使用可以說最頻繁的,通過網上看資料和自己寫sql測試發現資料裡說的和測試結果不同,網上有些資料說group by、order by後面的列必須出現在select查詢語句中,還有order by的列必須是group by裡的,這並不準確。而且在Mysql裡測發現group

淺談group byorder by的用法區別

前一段時間的面試,問道這個問題,不太清楚了,感覺有必要來總結一下。話不多說,直接開始吧! 一、order by的用法 使用order by,一般是用來,依照查詢結果的某一列(或多列)屬性,進行排序(升序:ASC;降序:DESC;預設為升序)。 當排序列含空值時: ASC:

group byorder by的用法區別

一、order by的用法 使用order by,一般是用來,依照查詢結果的某一列(或多列)屬性,進行排序(升序:ASC;降序:DESC;預設為升序)。 當排序列含空值時: ASC:排序列為空值的元組最後顯示。 DESC:排序列為空值的元組最先顯示。 為了好記憶,我

grop by ord by

1、概述 “Group By”從字面意義上理解就是根據“By”指定的規則對資料進行分組,所謂的分組就是將一個“資料集”劃分成若干個“小區域”,然後針對若干個“小區域”進行資料處理。   2、原始表   3、簡單Group By 示例1 selec

09-Hive查詢操作Distributed by sort by

宣告: 哈嘍,大家好,我是謝老師。 今天來學習的是Distributed by 和sort by語法。 首先還是要來回顧一下上一講所學的join和mapjoin操作。mapjoin會比join快很多,資料量很小的時候優勢不明顯,資料量很大的時候就快很多了。mapjoin其實就是j

order by ground by 區別:

order by 排序查詢:asc升序 desc降序 select * from Student order by age根據學生的年齡查詢學生資訊(預設是升序) ground by:分組查詢 having只能用於ground by子句作用於組內 按照

sql統計分組的組數

SELECT COUNT(*) from (SELECT * from enroll GROUP BY org_id) newtable; 例子 查詢攻擊的類別數 SELECT "count"(*)

Mybatis like 查詢 防止SQL注入方法相關原理解決方法整理

SQL注入:引自百度百科: 所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。具體來說,它是利用現有應用程式,將(惡意)的

sql分組統計group by 日期的處理

 近幾天補oracle的sql知識,這塊記錄下sql的分組統計 1.簡單的分組統計 建立STUDENT表: CREATE TABLE STUDENT( "NAME" VARCHAR2(10 BYTE), "MAJOR" VARCHAR2(10 BYTE),