求SQL:怎样求两列的平均数,然后把值作为第三列

时间:2022-01-22 10:35:00
表:T
S_Name  S_YuWen  S_ShuXue
-------------------------
张三     80       80
李五     0        100

需要得到的结果:
S_Name  S_YuWen  S_ShuXue  S_AVG
---------------------------------
张三       80       80      80
李五       0        100     50
     

14 个解决方案

#1


select S_Name , S_YuWen,  S_ShuXue,(S_YuWen+S_ShuXue)/2.0 as S_AVG
from T

#2


上面写的很对

#3


----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/

#4


引用 3 楼 DBA_Huangzj 的回复:
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/


----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--    Dec 28 2012 20:23:12 
--    Copyright (c) Microsoft Corporation
--    Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------

这个是模板吗?咋弄出来的?

#5


引用 4 楼 x_wy46 的回复:
Quote: 引用 3 楼 DBA_Huangzj 的回复:

----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/


----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--    Dec 28 2012 20:23:12 
--    Copyright (c) Microsoft Corporation
--    Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------

这个是模板吗?咋弄出来的?
商业机密...

#6



select *, (S_YuWen+S_ShuXue)/2 as S_AVG from T

#7


引用 3 楼 DBA_Huangzj 的回复:
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/


好奇怪,我自己的环境,不用GROUP BY 

#8


额...写错了,上面的代码不需要group by,一开始我用了avg,忘了去除而已

#9


引用 5 楼 DBA_Huangzj 的回复:
Quote: 引用 4 楼 x_wy46 的回复:

Quote: 引用 3 楼 DBA_Huangzj 的回复:

----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/


----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--    Dec 28 2012 20:23:12 
--    Copyright (c) Microsoft Corporation
--    Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------

这个是模板吗?咋弄出来的?
商业机密...


我也很好奇这一段作者信息是怎么弄上去的,之前Eclipse可以有快捷键... sql就不知道怎么弄了

#10


求SQL:怎样求两列的平均数,然后把值作为第三列好奇害死猫,还是不要知道为好
引用 9 楼 NingJuHuan 的回复:
Quote: 引用 5 楼 DBA_Huangzj 的回复:

Quote: 引用 4 楼 x_wy46 的回复:

Quote: 引用 3 楼 DBA_Huangzj 的回复:

----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/


----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--    Dec 28 2012 20:23:12 
--    Copyright (c) Microsoft Corporation
--    Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------

这个是模板吗?咋弄出来的?
商业机密...


我也很好奇这一段作者信息是怎么弄上去的,之前Eclipse可以有快捷键... sql就不知道怎么弄了

#11


这个应该是预先放到一个sql文件中,然后版主手动输入的把。

#12


还是用除的方便~
select S_Name,S_ShuXue,S_YuWen, (S_ShuXue+S_YuWen)/2 as S_Avg from aa

求SQL:怎样求两列的平均数,然后把值作为第三列

#13


Microsoft SQL Server 2012

我看到了版本号,也许是版主用了直接生成SQL语句,然后改成自己的名字

#14


引用 13 楼 a01589 的回复:
Microsoft SQL Server 2012

我看到了版本号,也许是版主用了直接生成SQL语句,然后改成自己的名字

跑题了呵呵。。。楼主威武

#1


select S_Name , S_YuWen,  S_ShuXue,(S_YuWen+S_ShuXue)/2.0 as S_AVG
from T

#2


上面写的很对

#3


----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/

#4


引用 3 楼 DBA_Huangzj 的回复:
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/


----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--    Dec 28 2012 20:23:12 
--    Copyright (c) Microsoft Corporation
--    Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------

这个是模板吗?咋弄出来的?

#5


引用 4 楼 x_wy46 的回复:
Quote: 引用 3 楼 DBA_Huangzj 的回复:

----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/


----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--    Dec 28 2012 20:23:12 
--    Copyright (c) Microsoft Corporation
--    Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------

这个是模板吗?咋弄出来的?
商业机密...

#6



select *, (S_YuWen+S_ShuXue)/2 as S_AVG from T

#7


引用 3 楼 DBA_Huangzj 的回复:
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/


好奇怪,我自己的环境,不用GROUP BY 

#8


额...写错了,上面的代码不需要group by,一开始我用了avg,忘了去除而已

#9


引用 5 楼 DBA_Huangzj 的回复:
Quote: 引用 4 楼 x_wy46 的回复:

Quote: 引用 3 楼 DBA_Huangzj 的回复:

----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/


----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--    Dec 28 2012 20:23:12 
--    Copyright (c) Microsoft Corporation
--    Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------

这个是模板吗?咋弄出来的?
商业机密...


我也很好奇这一段作者信息是怎么弄上去的,之前Eclipse可以有快捷键... sql就不知道怎么弄了

#10


求SQL:怎样求两列的平均数,然后把值作为第三列好奇害死猫,还是不要知道为好
引用 9 楼 NingJuHuan 的回复:
Quote: 引用 5 楼 DBA_Huangzj 的回复:

Quote: 引用 4 楼 x_wy46 的回复:

Quote: 引用 3 楼 DBA_Huangzj 的回复:

----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[T]
if object_id('[T]') is not null drop table [T]
go 
create table [T]([S_Name] varchar(4),[S_YuWen] int,[S_ShuXue] int)
insert [T]
select '张三',80,80 union ALL
select '李五',0,100
--------------开始查询--------------------------

select *,([S_YuWen]+[S_ShuXue])/2
 from [T]
 GROUP BY [S_Name],[S_YuWen],[S_ShuXue]
----------------结果----------------------------
/* 
S_Name S_YuWen     S_ShuXue    
------ ----------- ----------- -----------
李五     0           100         50
张三     80          80          80
*/


----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-13 11:38:06
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--    Dec 28 2012 20:23:12 
--    Copyright (c) Microsoft Corporation
--    Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------

这个是模板吗?咋弄出来的?
商业机密...


我也很好奇这一段作者信息是怎么弄上去的,之前Eclipse可以有快捷键... sql就不知道怎么弄了

#11


这个应该是预先放到一个sql文件中,然后版主手动输入的把。

#12


还是用除的方便~
select S_Name,S_ShuXue,S_YuWen, (S_ShuXue+S_YuWen)/2 as S_Avg from aa

求SQL:怎样求两列的平均数,然后把值作为第三列

#13


Microsoft SQL Server 2012

我看到了版本号,也许是版主用了直接生成SQL语句,然后改成自己的名字

#14


引用 13 楼 a01589 的回复:
Microsoft SQL Server 2012

我看到了版本号,也许是版主用了直接生成SQL语句,然后改成自己的名字

跑题了呵呵。。。楼主威武