sql中根據表中欄位分組分別統計每個分組的記錄數

2021-03-29 00:25:00 字數 5732 閱讀 2734

1樓:baby愛吃水煎包

分組統計可以參考以下操作:

當陣列重複的時候分組才有意義,因為一個人也可以分為一組,只是沒有意義而已,分組採用group by語句完成,語法如下:

例子:按照部門編號分組,求出每個部門的人數,平均工資

按照職位分組,求出每個職位的最高和最低工資:

一旦分組之後,實際上對於語法上就會出現新的限制:

分組函式可在沒有分組的時候單獨使用,卻不能出現其他的查詢欄位:

ename就是其它查詢欄位。在select子句之後,只能出現分組的欄位和統計函式,其它的欄位不能出現

分組函式允許巢狀,但是巢狀之後的分組函式的查詢之中不能再出現任何其它欄位

例子:按照職位分組,統計平均工資最高的工資

當新增其它欄位『job』之後出現錯誤

例子:查詢出每個部門的名稱、位置、部門的人數、平均工資

確定所需的資料表:

emp表:部門的人數,平均工資

dept表:部門的名稱,位置

確定已知的關聯欄位:

emp.deptno = dept.deptno

發現dname存在重複,可以進行分組去除重複,按照之前對分組的理解,只要資料重複那麼就有可能進行分組的查詢操作,但是此時與之前的分組操作 不太一樣,之前的分組是針對一張實體表進行分組的(emp,dept都屬於實體表),但是對於以上的資料是通過查詢結果顯示的,所以是一張臨時的虛擬表,但是不管是否是實體表還是虛擬表,只要是有重複,那麼就直接進行分組

2樓:匿名使用者

select 欄位,count(欄位) from tablename group by 欄位

用sql語句統計資料庫某個欄位中相同的資料有多少條?

3樓:幸運的

1、可通過分組和組內計數來實現,語句如下:

select a, count(*) from a group by a

2、用group by分組:

group by + [分組欄位](可以有多個)。在執行了這個操作以後,資料集將根據分組欄位的值將一個資料集劃分成各個不同的小組。

這裡,分組欄位是a,所以資料集分成了你、我、他三個組。然後用count(*)分別按照各個組來統計各自的記錄數量。

3、count(*)函式:

count(*) 函式返回表中的記錄數。注意它和group by連用,返回組內記錄數。

4樓:匿名使用者

select a,count(*) from 表a group by a

5樓:匿名使用者

select a, count(a) from a

group by a

6樓:大瑞瑞卡哇伊

select b,count(*) from a s join b sf on a.a_id = sf.b_id group by a_id;

sql如何查詢一張表的所有欄位並按其中一個欄位進行分組

7樓:匿名使用者

1、建立測試表,

create table test_group_cols(id number,  value varchar2(20), remark varchar2(20));

2、插入測試資料

insert into test_group_cols values(1,'15y','rmk1');

insert into test_group_cols values(2,'15y','rmk1');

insert into test_group_cols values(3,'25x','rmk2');

insert into test_group_cols values(3,'333','rmk4');

insert into test_group_cols values(3,'666','rmk3');

insert into test_group_cols values(4,'35s','rmk1');

insert into test_group_cols values(4,'77','rmk1');

3、查詢該表的所有欄位,select t.*, rowid from user_tab_cols t where table_name = upper('test_group_cols'),可以發現共有3個欄位,

4、編寫sql,按id欄位進行分組,select id, count(*) from test_group_cols t group by id,

8樓:汐日南莘

group by 語句用於結合合計函式,根據一個或多個列對結果集進行分組。

group by 也可以同時使用多個欄位進行分組

例子:假設一個表tab有一個id欄位、一個name欄位,內容如下

id name

3 張三

5 李四

1 王五

1 趙六

sql 語句

select * from tab group by id

這條sql的結果應該是

id name

1 王五

3 張三

5 趙六

第一個name顯示的是王五 因為sql group by滿足條件的有多個時是取第一個的

上面的結果並沒有什麼實際意義 group by 一般結合合計函式一起使用

比如 sql語句

select id, count(*) total from tab group by id

用於統計每個id有多少個

結果id total

1 2

3 1

5 1

9樓:

select * from 表

group by 其中一個欄位名稱

10樓:風飛

select * from 表名 group by 欄位

一定會報錯的,select 後面1 是分組的欄位,要麼是聚合函式 max min sum arg 等

你分組是要進行匯**一計嗎?要是這樣的話,你就加聚合函式就好 了

11樓:匿名使用者

group by 必須搭配 聚組函式一起使用。使用order by ,可以達到你要的效果

12樓:帽子叔叔大

select * from

sqlserver怎麼實現同一個表中多個count查詢並且分組並且統計總數

13樓:折柳成萌

可以有兩抄

種解決方法,

所需工具:sql

查詢兩個count的方法1:

select *****name , count (1) as 總題

數 , sum (case when statu = 1 then 1 else 0 end) as 稽核題數from questiongroup by *****nme

查詢兩個count的方法2:

select s.總題數, s.稽核題數, s.

*****namefrom (select count(1) as 總題數, case when status = 1 then count(1) else 0 end as 稽核題數, *****namefrom question--where *****name in (select distinct *****name from question), 這個條件可以不要了group by *****nme, stauts -- status也要作為分組欄位,因為在case中有使用) s

sql分組查詢問題,如何把 在同一欄位下具有不同值的 記錄 按一定條件進行分組查詢統計啊?

14樓:匿名使用者

用group by就可bai以解決。

比如表名為dutest,資料如下

id      grade

1         10

1         20

2         40

2         30

現在要求按

zhiid分組查詢daograde的和,可以用如下語回句:答select id,sum(grade) as grade from test group by id;

得到的結果是

id     grade

1         30

2         70

15樓:匿名使用者

select 費用

du區間=(case when 費用

zhi>=10 and 費用dao

<20 then '10-20' when 費用》=20 and 費用<30 then '20-30' end),count(*) as 個數, sum(費用) as 費用總計內

from 表

group by (case when 費用》=10 and 費用<20 then '10-20' when 費用》=20 and 費用<30 then '20-30' end)

類似,如果要多個容

分類,可在case裡多加幾個 when

16樓:匿名使用者

declare @

答t table (hm varchar(10),fy int)insert @t values ('23456',12)insert @t values ('56423',13)insert @t values ('56321',15)insert @t values ('89546',25)insert @t values ('78965',85)insert @t values ('56789',88)select bj,count(fy) as sl,sum(fy) as hj from (

select *,substring(cast(fy as varchar(10)),1,1) as bj

from @t) a

group by bj

17樓:西安_白小鵬

select 費用/10,sum(費用),count(1) from 表 group by 費用/10

18樓:匿名使用者

select 號碼zhi,

sum(case when 費用

dao回 between 10 and 20 then 費用 else 0 end)[10-20],

sum(case when 費用 between 21 and 30 then 費用 else 0 end)[21-30],

sum(case when 費用 between 31 and 40 then 費用 else 0 end)[31-40],

sum(case when 費用 between 41 and 50 then 費用 else 0 end)[41-50],

sum(case when 費用 between 51 and 60 then 費用 else 0 end)[51-60],

sum(case when 費用 between 61 and 70 then 費用 else 0 end)[61-70],

sum(case when 費用 between 71 and 80 then 費用 else 0 end)[71-80]

.....

from 表

group by 號碼答

用sql語句查詢某表中擁有多個相同欄位中的值

希望以下 回答能幫回助您答 select from case where class select top 1 class from case group by class order by count class desc 用sql語句查詢某表中擁有多個相同欄位中的一個值 欄位1欄位2,欄位3,欄...

在資料表中新增欄位的sql語句怎麼寫

資料表中新增一個欄位的標準sql語句寫法為 alter table 表名 add 欄位 欄位型別 default 輸入預設值 null not null 舉例 alter table employee add spbh varchar 20 not null default 0 意思就是在表empl...

sql資料庫如何追加欄位內容,在資料表中新增一個欄位的SQL語句怎麼寫

sql server專門提供了處理text,ntext,image欄位的函式,是 textptr textvalid readtext updatetext writetext 解決方法 declare ptrval binary 16 select ptrval textptr content f...