sql分組統計
㈠ 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分組統計
其實倒也不難,請解釋下:
需要統計的數據列表如下:
門店名稱|本在本消費金額|本在他消費金額|他在本消費金額
本在本、本在他、他在本 都是什麼意思?????
㈢ sql語句 如何分組後得到記錄總數
SELECT COUNT(*)
FROM (SELECT 分組欄位 FROM 表
GROUP BY 分組欄位
)別名
或者
SELECT COUNT(*)
FROM (SELECT distinct 分組欄位 FROM 表)別名
(3)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中根據表中一個欄位分組如何分別統計每個分組的記錄數
分組統計可以參考以下操作:
當數組重復的時候分組才有意義,因為一個人也可以分為一組,只是沒有意義而已,分組採用GROUP BY語句完成,語法如下:
㈤ sql分組合並統計查詢
select 部門,count(姓名) 人數,(select count(*) from biao where 部門=a.部門 and 狀態='狀態1') as 狀態1,(select count(*) from biao where 部門=a.部門 and 狀態='狀態2') as 狀態2,(select count(*) from biao where 部門=a.部門 and 狀態='狀態3') as 狀態3,(select count(*) from biao where 部門=a.部門 and 狀態='狀態4') as 狀態4 from biao a group by 部門
㈥ sql語句實現分組統計
方法和詳細的操作步驟如下:
1、第一步,創建一個測試表,詳細代碼見下圖,轉到下面的步驟。
㈦ 高級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語句 怎麼分組統計
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
㈨ sql 語句如何分組統計,並用統計結果除以150
直接加上運算符試試: select sj,count(sj)/數 as 平均數 from sheet1 group by sj