ホームページ データベース mysql チュートリアル 一句Sql把纵向表转为横向表,并分别分组求平均和总平均值

一句Sql把纵向表转为横向表,并分别分组求平均和总平均值

Jun 07, 2016 pm 06:00 PM
平均値

一句Sql把纵向表转为横向表,并分别分组求平均和总平均值,需要的朋友可以参考下。

效果如图所示:

测试sql语句如下:
代码如下:
declare @tab table(Class varchar(20),Student varchar(20),Course varchar(50),Quantity decimal(7,2));
insert into @tab(Class,Student,Course,Quantity) values('A班','张三','语文',60);
insert into @tab(Class,Student,Course,Quantity) values('A班','张三','数学',70);
insert into @tab(Class,Student,Course,Quantity) values('A班','张三','英语',80);
insert into @tab(Class,Student,Course,Quantity) values('A班','李四','语文',30);
insert into @tab(Class,Student,Course,Quantity) values('A班','李四','数学',40);
insert into @tab(Class,Student,Course,Quantity) values('A班','李四','英语',50);

insert into @tab(Class,Student,Course,Quantity) values('B班','王五','语文',65);
insert into @tab(Class,Student,Course,Quantity) values('B班','王五','数学',75);
insert into @tab(Class,Student,Course,Quantity) values('B班','王五','英语',85);
insert into @tab(Class,Student,Course,Quantity) values('B班','赵六','语文',35);
insert into @tab(Class,Student,Course,Quantity) values('B班','赵六','数学',45);
insert into @tab(Class,Student,Course,Quantity) values('B班','赵六','英语',55);



select * from @tab

select
(case when Grouping(Class)=1 then '总平均' when Grouping(Student)=1 then '' else Class end ) as Class
,(case when Grouping(Class)=1 then '' when Grouping(Student)=1 then '平均' else Student end) as Student
,avg(语文) as 语文
,avg(数学) as 数学
,avg(英语) as 英语
,avg(总分) as 总分
from (
select Class,Student
,(select isnull(sum(Quantity),0) from @tab where Class=t.Class and Student=t.Student and Course='语文') as '语文'
,(select isnull(sum(Quantity),0) from @tab where Class=t.Class and Student=t.Student and Course='数学') as '数学'
,(select isnull(sum(Quantity),0) from @tab where Class=t.Class and Student=t.Student and Course='英语') as '英语'
,(select isnull(sum(Quantity),0) from @tab where Class=t.Class and Student=t.Student) as '总分'
from @tab as t
group by Class,Student
) as tempTab
group by Class,Student,语文,数学,英语,总分 with rollup
having Grouping(语文)=1
and Grouping(数学)=1
and Grouping(英语)=1
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

平均を表す言葉の公式は何ですか? 平均を表す言葉の公式は何ですか? Sep 19, 2023 pm 01:48 PM

平均を表す言葉の公式は何ですか?

自然数の二乗平均? 自然数の二乗平均? Sep 20, 2023 pm 10:29 PM

自然数の二乗平均?

PHPで配列を平均化する関数は何ですか? PHPで配列を平均化する関数は何ですか? Jul 17, 2023 pm 04:03 PM

PHPで配列を平均化する関数は何ですか?

奇数が与えられた場合、すべての奇数の平均を求めます。 奇数が与えられた場合、すべての奇数の平均を求めます。 Sep 03, 2023 pm 03:49 PM

奇数が与えられた場合、すべての奇数の平均を求めます。

平均が指定された配列の中央値を超える長さ K の部分配列を計算します 平均が指定された配列の中央値を超える長さ K の部分配列を計算します Sep 02, 2023 am 08:09 AM

平均が指定された配列の中央値を超える長さ K の部分配列を計算します

MySQL の AVG 関数を使用して特定のフィールドの平均を計算する方法 MySQL の AVG 関数を使用して特定のフィールドの平均を計算する方法 Jul 12, 2023 pm 03:28 PM

MySQL の AVG 関数を使用して特定のフィールドの平均を計算する方法

特定の偶数の前にあるすべての偶数の平均はいくらですか? 特定の偶数の前にあるすべての偶数の平均はいくらですか? Aug 25, 2023 pm 11:53 PM

特定の偶数の前にあるすべての偶数の平均はいくらですか?

PHPで1次元配列の平均を見つける方法 PHPで1次元配列の平均を見つける方法 Dec 26, 2022 am 10:20 AM

PHPで1次元配列の平均を見つける方法

See all articles