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

sql分組統計

發布時間: 2022-01-30 01:33:45

sql 分組統計

--SQL SERVER 2000 動態SQL。
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 課程 when ''' + 課程 + ''' then 分數 else 0 end) [' + 課程 + ']'
from (select distinct 課程 from tb) as a
set @sql = @sql + ' , cast(avg(分數*1.0) as decimal(18,2)) 平均分 , sum(分數) 總分 from tb group by 姓名'
exec(@sql)

普通行列轉換
問題:假設有張學生成績表(tb)如下:
姓名 課程 分數
張三 語文 74
張三 數學 83
張三 物理 93
李四 語文 74
李四 數學 84
李四 物理 94
想變成(得到如下結果):
姓名 語文 數學 物理
---- ---- ---- ----
李四 74 84 94
張三 74 83 93
-------------------
*/
create table tb(姓名 varchar(10) , 課程 varchar(10) , 分數 int)
insert into tb values('張三' , '語文' , 74)
insert into tb values('張三' , '數學' , 83)
insert into tb values('張三' , '物理' , 93)
insert into tb values('李四' , '語文' , 74)
insert into tb values('李四' , '數學' , 84)
insert into tb values('李四' , '物理' , 94)
go

--SQL SERVER 2000 靜態SQL,指課程只有語文、數學、物理這三門課程。(以下同)
select 姓名 as 姓名 ,
max(case 課程 when '語文' then 分數 else 0 end) 語文,
max(case 課程 when '數學' then 分數 else 0 end) 數學,
max(case 課程 when '物理' then 分數 else 0 end) 物理
from tb
group by 姓名

㈡ 高級sql 分組查詢統計

用with rollup 可以生成匯總數據,我沒環境沒法測,只提供思路,用的是樓上oracle的語法
結果是下面這樣的,不知是不是你想要的
門店 年月日 數據1 數據2
a 2011-08-24 1 2
a 2011-08-25 3 4
a 2011-08合計: 4 6
a 2011-09-01 5 6
a 2011-09合計: 5 6
select
門店,
case when grouping(to_char(時間,'yyyy-mm-dd'))=0 then to_char(時間,'yyyy-mm')||'合計:' else to_char(時間,'yyyy-mm-dd') end as 年月日
sum(數據1) as 數據1,
sum(數據2) as 數據2
from tab
group by 門店,to_char(時間,'yyyy-mm'),to_char(時間,'yyyy-mm-dd') with rollup
order by to_char(時間,'yyyy-mm'),to_char(時間,'yyyy-mm-dd')

㈢ sql分組統計

方法和詳細的操作步驟如下:

1、第一步,創建一個測試表,詳細代碼見下圖,轉到下面的步驟。

㈣ SQL 分組統計並排序

with tmp as
(select row_number() over(order by count(val)) as rn,val,count(val) as cnum from table1 group by val)
select * from tmp where rn<3
要想區別並列現象還要復雜一些,可能簡單的語句解決不了

㈤ sql group 按分組數量統計

select 姓名 ,性別,分數,a.班級,成績,b.某欄位和 from 表 a
left join (select 班級,sum(某一個欄位)as 某欄位和 from 表 group by 班級) b
on a.班級=b.班級

㈥ sql 語句如何分組統計,並用統計結果除以150

直接加上運算符試試: select sj,count(sj)/數 as 平均數 from sheet1 group by sj

㈦ SQL分組統計

其實倒也不難,請解釋下:
需要統計的數據列表如下:
門店名稱|本在本消費金額|本在他消費金額|他在本消費金額
本在本、本在他、他在本 都是什麼意思?????

㈧ sql語句 如何分組後得到記錄總數

SELECT COUNT(*)

FROM (SELECT 分組欄位 FROM 表

GROUP BY 分組欄位

)別名


或者

SELECT COUNT(*)

FROM (SELECT distinct 分組欄位 FROM 表)別名

(8)sql分組統計擴展閱讀:

SQL分組查詢

在SQL Server中使用的分組查詢是ORDER BY子句,使用ORDER BY子句要同聚合函數配合使用才能完成分組查詢,在SELECT查詢的欄位中如果欄位沒有使用聚合函數就必須出現在ORDER BY子句中(即SELECT後邊的欄位名要麼出現在聚合函數中,要麼在ORDER BY子句中使用)

在分組查詢中還可以配合使用HAVING子句,定義查詢條件。

使用group by進行分組查詢

在使用group by關鍵字時,在select列表中可以指定的項目是有限制的,select語句中僅許以下幾項:

1、被分組的列

2、為每個分組返回一個值得表達式,例如用一個列名作為參數的聚合函數

3、group by 有一個原則,就是 select 後面的所有列中,沒有使用聚合函數的列,必須出現在 group by 後面

㈨ sql語句 怎麼分組統計

USEtest;
CREATETABLEIFNOTEXISTStable1(
idINTPRIMARYKEY,
datetimeColDATETIMENOTNULL,
contentVARCHAR(256)
);
INSERTINTOtable1(id,datetimeCol,content)VALUES(1,"2018-01-0102:02:00","abc");
INSERTINTOtable1(id,datetimeCol,content)VALUES(2,"2018-03-0404:02:00","zxc");
INSERTINTOtable1(id,datetimeCol,content)VALUES(3,"2018-01-0102:18:00","abc12");
INSERTINTOtable1(id,datetimeCol,content)VALUES(4,"2018-04-0423:01:40","mb");
SELECTgroupCol,COUNT(id)AScountColFROM(SELECTEXTRACT(HOURFROMdatetimeCol)ASgroupCol,idFROMtable1);

結果為:

groupCol, countCol

2, 2

4, 1

23, 1