當前位置:首頁 » 編程語言 » sql怎麼查group
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql怎麼查group

發布時間: 2022-05-08 15:59:27

sql關於group by查詢問題

select replace(姓名,'張三1','張三'), sum(吃了幾碗飯) from 表名 group by replace(姓名,'張三1','張三')

❷ 查詢sql,查出GROUP BY 之後的記錄條數,及符合某個條件的記錄條數,顯示到一條記錄中

SELECT * FROM temp.CUST_NO ,temp.c,temp1.c1,temp2.c2
(SELECT CUST_NO,COUNT(*) c FROM CUST_DRAFTNO WHERE DRAFT_TYPE IN ('3','4','5')AND STATUS IN ('4','5') GROUP BY CUST_NO) temp
LEFT JOIN (SELECT CUST_NO,COUNT(*)c1 FROM CUST_DRAFTNO WHERE DRAFT_TYPE IN ('3','4','5')AND STATUS IN ('4','5') AND STATUS='4' GROUP BY CUST_NO) temp1 ON temp.CUST_NO=temp1.CUST_NO
LEFT JOIN (SELECT CUST_NO,COUNT(*) c2 FROM CUST_DRAFTNO WHERE DRAFT_TYPE IN ('3','4','5')AND STATUS IN ('4','5') AND STATUS='5' GROUP BY CUST_NO) temp2 ON temp.CUST_NO=temp2.CUST_NO 查出根據CUST_NO分組
的sql組成表
在使用LEFT
JOIN 查出根據CUST_NO分組並且條件STATUS=4的sql組成表
繼續使用LEFT
JOIN 查出根據CUST_NO分組並且條件STATUS=5的sql組成表
組合查出的數據就是你要的

❸ sql里group的用法

在select 語句中可以使用group by 子句將行劃分成較小的組,然後,使用聚組函數返回每一個組的匯總信息,另外,可以使用having子句限制返回的結果集。group by 子句可以將查詢結果分組,並返回行的匯總信息Oracle 按照group by 子句中指定的表達式的值分組查詢結果。

在帶有group by 子句的查詢語句中,在select 列表中指定的列要麼是group by 子句中指定的列,要麼包含聚組函數

select max(sal),job emp group by job;
(注意max(sal),job的job並非一定要出現,但有意義)

查詢語句的select 和group by ,having 子句是聚組函數唯一出現的地方,在where 子句中不能使用聚組函數。

select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;

當在gropu by 子句中使用having 子句時,查詢結果中只返回滿足having條件的組。在一個sql語句中可以有where子句和having子句。having 與where 子句類似,均用於設置限定條件

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

查詢每個部門的每種職位的雇員數
select deptno,job,count(*) from emp group by deptno,job;

❹ sql 查詢 group

我回復過你了 ...

❺ sql查詢中如何用group by查詢出完整的一行記錄

selct * from table where uploadtime=max(uploadtime) group by school
這條語句能把uploadtime最大的那一條數據查出來
select * 就是查出所有的數據,你再用where=* 過濾指定一下你要查數據的條件。

關於你的語句{
select id,name,nickname,email,school,max(uploadtime) from table group by school }

這段代碼只是隨意查了個id,name等信息,但是不是max(uploadtime)對應的,你改成
{select id,name,nickname,email,school,uploadtime where uploadtime=max(uploadtime) from table group by school }

不知道你問的是不是這個意思

❻ SQL中查詢多個欄位時,GROUP BY 要怎麼使用

group
by是要用在sum(),max(),min()等聚合函數的後面
不能單獨使用,如果要排序的話
根據order
by
排序就行了,這個排序在一定意義上也可以理解為分組

❼ SQL多表查詢 group by

只能看到你的語句 沒辦法看到你的數據,一般group by 都跟聚合函數一起使用,比如你查出來的ID相同的有多個,你要讓這個ID變成一條的話,可以把不同的欄位求和處理,或者其他處理,讓這些相同ID的數據變成1條,又或者你查詢出來會有多條完全相同的數據 你只要保留一條,可以使用distinct去重,看你實際的需求是啥樣的和你數據是啥樣的,反正我是沒敢猜你這個具體要怎麼用

❽ SQL中的Group By的查詢過程多列分組的查詢過程是怎樣的

Group By子句
Group By子句可以將表的行劃分為不同的組。分別總結每個組,這樣就可以控制想要看見的詳細信息的級別。

語法:

[ Group By [ ALL ] Group_By_expression[ ,...n ]

[ WITH { CUBE | ROLLUP } ] ]

參數說明:

ALL:包含所有組和結果集,甚至包含那些任何行都不滿足WHERE子句指定的搜索條件的組和結果集。如果指定了ALL,將對組中不滿足搜索條件的匯總列返回空值。不能用CUBE或ROLLUP運算符指定ALL。如果訪問遠程表的查詢中有WHERE子句,則不支持Group By ALL操作。

Group_By_expression:對其執行分組的表達式。Group_By_expression也稱為分組列。Group_By_expression可以是列或引用列的非聚合表達式。在選擇列表內定義的列的別名不能用於指定分組列。對於不包含CUBE或ROLLUP的Group By子句,Group_By_ expression的項數受查詢所涉及的Group By列的大小、聚合列和聚合值的限制。該限制從8060位元組的限制開始,對保存中間查詢結果所需的中間級工作表有8060位元組的限制。如果指定了CUBE或ROLLUP,則最多隻能有10個分組表達式。

CUBE:指定在結果集內不僅包含由Group By提供的正常行,還包含匯總行。在結果集內返回每個可能的組和子組組合的Group By匯總行。Group By匯總行在結果中顯示為NULL,但可用來表示所有值。使用GroupING函數確定結果集內的空值是否是Group By匯總值。結果集內的匯總行數取決於Group By子句內包含的列數。Group By子句中的每個操作數(列)綁定在分組NULL下,並且分組適用於所有其他操作數(列)。由於CUBE返回每個可能的組和子組組合,因此,不論指定分組列所使用的是什麼順序,行數都相同。

ROLLUP:指定在結果集內不僅包含由Group By提供的正常行,還包含匯總行。按層次結構順序,從組內的最低級別到最高級別匯總組。組的層次結構取決於指定分組列時所使用的順序。更改分組列的順序會影響在結果集內生成的行數。

使用Group By子句的注意事項。

(1)在SELECT子句的欄位列表中,除了聚集函數外,其他所出現的欄位一定要在Group By子句中有定義才行。例如「Group By A,B」,那麼「SELECT SUM(A),C」就有問題,因為C不在Group By中,但是SUM(A)是可以的。

(2)SELECT子句的欄位列表中不一定要有聚集函數,但至少要用到Group By子句列表中的一個項目。例如「Group By A,B,C」,則「SELECT A」是可以的。

(3)在SQL Server中text、ntext和image數據類型的欄位不能作為Group By子句的分組依據。

(4)Group By子句不能使用欄位別名。
1.按單列進行分組

Group By子句可以基於指定某一列的值將數據集合劃分為多個分組,同一組內所有記錄在分組屬性上具有相同值。

示例:

把「student」表按照「性別」這個單列進行分組。在查詢分析器中輸入的SQL語句如下:

use student

select 性別

from student

Group By 性別

但仍然要強調SELECT子句必須與Group By後的子句或者是分組函數列相一致。

例如,由於下列查詢中「姓名」列既不包含在Group By子句中,也不包含在分組函數中,所以是錯誤的。錯誤的SQL語句如下:

use student select 姓名,性別 from student Group By 性別

例如,在「grade」表中,按「學期」分組查詢。SQL語句如下:

use studnet select 學期 from grade Group By 學期

2.按多列進行分組

Group By子句可以基於指定多列的值將數據集合劃分為多個分組。

示例:

在「student」表中,按照「性別」和「年齡」列進行分組。在查詢分析中輸入的SQL語句如下:

use student

select 性別,年齡

from student

Group By 性別,年齡

在「student」表中,首先按照「性別」分組,然後再按照「年齡」分組。

再舉一個例子,例如,在「grade」表中,按照「學號」和「課程代號」列進行分組。SQL語句如下:

use student

select 學號,課程代號 from grade Group By 學號,課程代號

按多列進行分組時有NULL組的是如何處理的。當表按多列進行分組時有NULL組,這時NULL被作為一個特定值處理,就像其他任何值一樣。也就是說,如果在某個分組列中存在兩個NULL,則按它們有相同的值那樣處理,並將它們放在相同的組中。

示例:

在「grade」表中,按「學期」和「課程代號」列進行分組。在查詢分析器中輸入的SQL語句如下:

use student

select 學期,課程代號

from grade

Group By 學期,課程代號

3.與聚集函數一起使用

Group By子句是經常與聚集函數一起使用。如果SELECT子句中包含聚集函數,則計算每組的匯總值,當用戶指定Group By時,選擇列表中任一非聚集表達式內的所有列都應包含在Group By列表中,或者Group By表達式必須與選擇列表表達式完全匹配。

示例:

在「student」表中,分別求男女生的平均年齡。在查詢分析器中輸入的SQL語句如下:

use student

select 性別,avg(年齡) as 平均年齡

from student

Group By 性別

例如,在「student」表中,分別求有多少個男生和女生。SQL語句如下:

use student

select 性別,count(性別) as 人數 from student Group By 性別

說明:關於聚合函數的詳細講解可參閱9.2.1節。

4.與HAVING子句一起使用

HAVING子句對Group By子句選擇出來的結果進行再次篩選,最後輸出符合HAVING子句中條件的記錄。HAVING子句的語法與WHERE子句的語法相類似,惟一不同的是HAVING子句中可以包含聚合函數。

語法:

[HAVING <search_condition>]

參數說明:

<search_condition>:指定組或聚合應滿足的搜索條件。當HAVING與Group By ALL一起使用時,HAVING 子句替代ALL。

示例:

在「student」表中,按「性別」分組求平均年齡,並且查詢其平均年齡大於21的學生信息。在查詢分析器中輸入的SQL語句如下:

use student

select avg(年齡), 性別

from student

Group By 性別

having avg(年齡)>21

在「grade」表中,按「學期」分組求平均成績,並且查詢「平均成績」大於93的課程信息。在查詢分析器中輸入的SQL語句如下:
+1 已贊過

❾ 在SQL查詢GROUP BY語句用於什麼

從關系資料庫中的SQL查詢得知,GROUP BY語句用於組合聚合函數以基於一個或多個列對結果集進行分組。

例如:

select distinct username from users group by username having count(*)>1

這句話的意思是:首先按用戶名分組,然後找到其中count(*)> 1的記錄,

即:查詢以在用戶表中查找具有相同用戶名的多個記錄的用戶名。

(9)sql怎麼查group擴展閱讀:

通常在SELECT語句中使用分組子句,並且將進行聚合操作。 但是,分組子句對於執行聚合操作不是必需的。

例如,要查找直隸男同學的人數,此時只有一個合計值,因此無需將其分組。

SELECT COUNT(*)

from student

where ssex='男';

但是,當同一聚合操作有多個值時,必須使用分組子句。

例如:查找每個年齡段的學生人數。 此時存在多個與年齡有關的聚合值,因此必須將其分組。

❿ SQL如何計算有幾組(GROUP BY 問題)

「Group
By」從字面意義上理解就是根據「By」指定的規則對數據進行分組,所謂的分組就是將一個「數據集」劃分成若干個「小區域」,然後針對若干個「小區域」進行數據處理。
1、原始表
2、簡單Group
By
示例1
select
類別,
sum(數量)
as
數量之和
from
A
group
by
類別
返回結果如下表,實際上就是分類匯總。
3、Group
By

Order
By
示例2
select
類別,
sum(數量)
AS
數量之和
from
A
group
by
類別
order
by
sum(數量)
desc
返回結果如下表
在Access中不可以使用「order
by
數量之和
desc」,但在SQL
Server中則可以。
4、Group
By中Select指定的欄位限制
示例3
select
類別,
sum(數量)
as
數量之和,
摘要
from
A
group
by
類別
order
by
類別
desc
示例3執行後會提示下錯誤,如下圖。這就是需要注意的一點,在select指定的欄位要麼就要包含在Group
By語句的後面,作為分組的依據;要麼就要被包含在聚合函數中。
5、Group
By
All
示例4
select
類別,
摘要,
sum(數量)
as
數量之和
from
A
group
by
all
類別,
摘要
示例4中則可以指定「摘要」欄位,其原因在於「多列分組」中包含了「摘要欄位」,其執行結果如下表
「多列分組」實際上就是就是按照多列(類別+摘要)合並後的值進行分組,示例4中可以看到「a,
a2001,
13」為「a,
a2001,
11」和「a,
a2001,
2」兩條記錄的合並。
SQL
Server中雖然支持「group
by
all」,但Microsoft
SQL
Server
的未來版本中將刪除
GROUP
BY
ALL,避免在新的開發工作中使用
GROUP
BY
ALL。Access中是不支持「Group
By
All」的,但Access中同樣支持多列分組,上述SQL
Server中的SQL在Access可以寫成
select
類別,
摘要,
sum(數量)
AS
數量之和
from
A
group
by
類別,
摘要
6、Group
By與聚合函數
在示例3中提到group
by語句中select指定的欄位必須是「分組依據欄位」,其他欄位若想出現在select中則必須包含在聚合函數中。
示例5:求各組平均值
select
類別,
avg(數量)
AS
平均值
from
A
group
by
類別;
示例6:求各組記錄數目
select
類別,
count(*)
AS
記錄數
from
A
group
by
類別;
示例7:求各組記錄數目
8、Having與Where的區別
•where
子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據,where條件中不能包含聚組函數,使用where條件過濾出特定的行。
•having
子句的作用是篩選滿足條件的組,即在分組之後過濾數據,條件中經常包含聚組函數,使用having
條件過濾出特定的組,也可以使用多個分組標准進行分組。
示例8
select
類別,
sum(數量)
as
數量之和
from
A
group
by
類別
having
sum(數量)
>
18
示例9:Having和Where的聯合使用方法
select
類別,
SUM(數量)from
A
where
數量
gt;8
group
by
類別
having
SUM(數量)
gt;
10
9、Compute

Compute
By
select
*
from
A
where
數量
>
8
執行結果:
示例10:Compute
select
*from
A
where
數量>8
ompute
max(數量),min(數量),avg(數量)
執行結果如下:
compute子句能夠觀察「查詢結果」的數據細節或統計各列數據(如例10中max、min和avg),返回結果由select列表和compute統計結果組成。
示例11:Compute
By
select
*from
A
where
數量>8
order
by
類別
compute
max(數量),min(數量),avg(數量)
by
類別
執行結果如下:
示例11與示例10相比多了「order
by
類別」和「...
by
類別」,示例10的執行結果實際是按照分組(a、b、c)進行了顯示,每組都是由改組數據列表和改組數統計結果組成,另外:
•compute子句必須與order
by子句用一起使用
•compute...by與group
by相比,group
by
只能得到各組數據的統計結果,而不能看到各組數據
在實際開發中compute與compute
by的作用並不是很大,SQL
Server支持compute和compute
by,而Access並不支持