sqlgroupby語句
① sql語句中的group by什麼意思
分類匯總的時候用。group
by
:表示按欄位分組。例如:分別計算男性用戶和女性用戶的平均年齡。select
性別,avg(年齡)
as
average
from
表名
group
by
性別
② SQL中group by語句有何作用
是用來分組的。
比如A表裡面有數據如下
欄位1
欄位2
欄位3
A
A1
A2
B
B1
B2
A
A2
A3
A
A4
A1
我想查出這表裡面到底有幾個人
那麼就要用到group
by來進行分組
select
欄位1
from
A
group
by
欄位1
那麼結果是
欄位1
A
B
這2條數據
③ sql語句中的group by要怎麼用!!
1、定義
「Group
By」表達的意思就是按照「By」表明的規則對所有數據進行歸類,所謂的歸類就是將數據分成許多個「小區域」,對這些「小區域」里的數據進行處理。
2、原始表
3、簡單Group
By
示例1
select
類別,
sum(數量)
as
數量之和
from
A
group
by
類別
返回結果如下表,實際上就是分類匯總。
4、Group
By
和
Order
By
示例2
select
類別,
sum(數量)
AS
數量之和
from
A
group
by
類別
order
by
sum(數量)
desc
返回結果如下表
在Access中不可以使用「order
by
數量之和
desc」,但在SQL
Server中則可以。
5、Group
By中Select指定的欄位限制
示例3
select
類別,
sum(數量)
as
數量之和,
摘要
from
A
group
by
類別
order
by
類別
desc
示例3執行後會提示下錯誤,如下圖。這就是需要注意的一點,在select指定的欄位要麼就要包含在Group
By語句的後面,作為分組的依據;要麼就要被包含在聚合函數中。
6、Group
By
All
示例4
select
類別,
摘要,
sum(數量)
as
數量之和
from
A
group
by
all
類別,
摘要
示例4中則可以指定「摘要」欄位,其原因在於「多列分組」中包含了「摘要欄位」,其執行結果如下表
「多列分組」實際上就是就是按照多列(類別+摘要)合並後的值進行分組,示例4中可以看到「a,
a2001,
13」為「a,
a2001,
11」和「a,
a2001,
2」兩條記錄的合並。
7、Having與Where的區別
where
子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據,where條件中不能包含聚組函數,使用where條件過濾出特定的行。
having
子句的作用是篩選滿足條件的組,即在分組之後過濾數據,條件中經常包含聚組函數,使用having
條件過濾出特定的組,也可以使用多個分組標准進行分組。
示例5
select
類別,
sum(數量)
as
數量之和
from
A
group
by
類別
having
sum(數量)
>
18
示例6:Having和Where的聯合使用方法
select
類別,
SUM(數量)from
A
where
數量
gt;8
group
by
類別
having
SUM(數量)
gt;
10
8、Compute
和
Compute
By
select
*
from
A
where
數量
>
8
執行結果:
示例7:Compute
select
*
from
A
where
數量>8
compute
max(數量),min(數量),avg(數量)
執行結果如下:
compute子句能夠觀察「查詢結果」的數據細節或統計各列數據(如例10中max、min和avg),返回結果由select列表和compute統計結果組成。
示例8:Compute
By
select
*
from
A
where
數量>8
order
by
類別
compute
max(數量),min(數量),avg(數量)
by
類別
執行結果如下:
示例8與示例7相比多了「order
by
類別」和「...
by
類別」,示例10的執行結果實際是按照分組(a、b、c)進行了顯示,每組都是由改組數據列表和改組數統計結果組成.
④ 在SQL查詢GROUP BY語句用於什麼
從關系資料庫中的SQL查詢得知,GROUP BY語句用於組合聚合函數以基於一個或多個列對結果集進行分組。
例如:
select distinct username from users group by username having count(*)>1
這句話的意思是:首先按用戶名分組,然後找到其中count(*)> 1的記錄,
即:查詢以在用戶表中查找具有相同用戶名的多個記錄的用戶名。
(4)sqlgroupby語句擴展閱讀:
通常在SELECT語句中使用分組子句,並且將進行聚合操作。 但是,分組子句對於執行聚合操作不是必需的。
例如,要查找直隸男同學的人數,此時只有一個合計值,因此無需將其分組。
SELECT COUNT(*)
from student
where ssex='男';
但是,當同一聚合操作有多個值時,必須使用分組子句。
例如:查找每個年齡段的學生人數。 此時存在多個與年齡有關的聚合值,因此必須將其分組。
⑤ sql中得group by 用法
就是分組進行譬如,學生表student里有多個班級(classID)的學生,現在要統計每個班有多少學生,就用select
classID,count(*)
as
num
from
student
group
by
classID,顯示的結果就是班級號和班級的學生人數
⑥ sql中group by 是什麼意思啊請教謝謝
group
by
分組
通用資料庫具有基於表的特定列對數據進行分析的能力。
可按照在
GROUP
BY
子句中定義的組對行進行分組。以其最簡單的形式,組由稱為分組列的列組成。
SELECT
子句中的列名必須為分組列或列函數。列函數對於
GROUP
BY
子句定義的每個組各返回一個結果。下列示例產生一個列出每個部門編號的最高薪水的結果:
SELECT
DEPT,
MAX(SALARY)
AS
MAXIMUM
FROM
STAFF
GROUP
BY
DEPT
此語句產生下列結果:
DEPT
MAXIMUM
------
---------
10
22959.20
15
20659.80
20
18357.50
38
18006.00
42
18352.80
51
21150.00
66
21000.00
84
19818.00
注意:計算的是每個部門(由
GROUP
BY
子句定義的組)而不是整個公司的
MAX(SALARY)。
將
WHERE
子句與
GROUP
BY
子句一起使用
分組查詢可以在形成組和計算列函數之前具有消除非限定行的標准
WHERE
子句。必須在GROUP
BY
子句之前指定
WHERE
子句。例如:
SELECT
WORKDEPT,
EDLEVEL,
MAX(SALARY)
AS
MAXIMUM
FROM
EMPLOYEE
WHERE
HIREDATE
>
'1979-01-01'
GROUP
BY
WORKDEPT,
EDLEVEL
ORDER
BY
WORKDEPT,
EDLEVEL
結果為:
WORKDEPT
EDLEVEL
MAXIMUM
--------
-------
-----------
D11
17
18270.00
D21
15
27380.00
D21
16
36170.00
D21
17
28760.00
E11
12
15340.00
E21
14
26150.00
注意:在
SELECT
語句中指定的每個列名也在
GROUP
BY
子句中提到。未在這兩個地方提到的列名將產生錯誤。GROUP
BY
子句對
WORKDEPT
和
EDLEVEL
的每個唯一組合各返回一行。
在
GROUP
BY
子句之後使用
HAVING
子句
可應用限定條件進行分組,以便系統僅對滿足條件的組返回結果。為此,在GROUP
BY
子句後麵包含一個
HAVING
子句。
HAVING
子句可包含一個或多個用
AND
和
OR
連接的謂詞。每個謂詞將組特性(如
AVG(SALARY))與下列之一進行比較:
該組的另一個特性
例如:
HAVING
AVG(SALARY)
>
2
*
MIN(SALARY)
常數
例如:
HAVING
AVG(SALARY)
>
20000
例如,下列查詢尋找雇員數超過
4
的部門的最高和最低薪水:
SELECT
WORKDEPT,
MAX(SALARY)
AS
MAXIMUM,
MIN(SALARY)
AS
MINIMUM
FROM
EMPLOYEE
GROUP
BY
WORKDEPT
HAVING
COUNT(*)
>
4
ORDER
BY
WORKDEPT
此語句產生下列結果:
WORKDEPT
MAXIMUM
MINIMUM
--------
-----------
-----------
D11
32250.00
18270.00
D21
36170.00
17250.00
E11
29750.00
15340.00
有可能(雖然很少見)查詢有
HAVING
子句但沒有
GROUP
BY
子句。在此情況下,DB2
將整個表看作一個組。因為該表被看作是單個組,所以最多可以有一個結果行。如果
HAVING
條件對整個表為真,則返回選擇的結果(該結果必須整個由列函數組成);否則不返回任何行。
⑦ 簡單講解sql語句中的group by的使用方法
1.概述
group
by
就是依據by
後面的規則對數據分組,所謂的分組就是講數據集劃分成若干個'小組',針對若干個小組做處理。
2.語法規則
SELECT
column_name,
aggregate_function(column_name)
FROM
table_name
WHERE
column_name
operator
value
GROUP
BY
column_name
3.舉例說明
我們有這樣一個訂單表:
我們希望統計每一個用戶訂單的總金額,我們可以藉助
group
by
來實現:
select
Customer,sum(OrderPrice)
as
total_price
group
by
Customer;
出現下面的結果集:
Bush
2000
Carter
1700
Adams
2000
實際上是先講數據按照Customer分組,然後統計每一組orderPrice的總和,最後以一組作為一行展現出來。
如果去掉group
by
語句就會出現下面的結果:
它是講所有的price相加得到最後的總和,與我們的預期是不一樣的。
4.注意點
如果出現下面的寫法:
select
類別,
sum(數量)
as
數量之和,
摘要from
Agroup
by
類別order
by
類別
desc
會報錯,因為select
的欄位要麼包含在group
by
後面作為分組的依據,要麼包含在聚合函數中,否則摘要的那一列無法匹配到一行。
因此可以採用如下的寫法:
select
類別,
sum(數量)
AS
數量之和from
Agroup
by
類別order
by
sum(數量)
desc
如果想使用多列分組,可以採用group
by
all語法:
select
Customer,OrderDate,sum(OrderPrice)
group
by
all
Customer,OrderDate
5.where
和having的區別
where
是在查詢分組前,講不符合where
條件的行去掉,即在分組錢過濾數據,where
條件中不能包含聚合函數
having
是篩選滿足條件的組,即在分組之後過濾數據,having語句中常常包含聚合函數,用having過濾出特定的組。
舉例:
select
Customer,sum(OrderPrice)
as
total_price
group
by
Customer
having
total_price>1700;
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:一篇文章帶你了解資料庫中group
by的用法MySQL
group
by對單字分組序和多欄位分組的方法講解pymongo中group
by的操作方法教程
⑧ sql group by用法
1. select top 1 姓名,sum(分數) as 分數總和 from 表名 group by 姓名
order by 分數總和 desc
2. select 姓名 from 表名 group by 姓名 having min(分數)>90
測試通過
⑨ SQL中GROUP BY的用法
GROUP
BY
是分組查詢,
一般
GROUP
BY
是和
聚合函數配合使用,你可以想想
你用了GROUP
BY
按
ITEM.ITEMNUM
這個欄位分組,那其他欄位內容不同,變成一對多又改如何顯示呢,比如下面所示
A
B
1
abc
1
bcd
1
asdfg
select
A,B
from
table
group
by
A
你說這樣查出來是什麼結果,
A
B
abc
1
bcd
asdfg
右邊3條如何變成一條,所以需要用到聚合函數,比如
select
A,count(B)
數量
from
table
group
by
A
這樣的結果就是
A
數量
1
3
group
by
有一個原則,就是
select
後面的所有列中,沒有使用聚合函數的列,必須出現在
group
by
後面