注册 登录
编程论坛 SQL Server论坛

SQL平均值

dunnys 发布于 2022-07-09 18:49, 1890 次点击
你好
现在需要求每个工人的计件平均工资,但因为每个工人有多项工序计算,所以每个工人都会有多个名称,所以当用总数除以工人数量时就会把相同名称的一起核算导致数据不准。
如下图显示,使用SQL核算时如何按3个工人来计算而不是按13个来算。

谢谢!

只有本站会员才能查看附件,请 登录
12 回复
#2
mywisdom882022-07-10 17:12
先用名称分组统计一次,在算平均
你表的合计不对阿,看看
只有本站会员才能查看附件,请 登录
#3
mywisdom882022-07-10 17:15
select 姓名,sum(单价*数量) as 合计 from 你表 group by 姓名
只有本站会员才能查看附件,请 登录
#4
mywisdom882022-07-10 17:22
你总数量也不对,应该是384
SELECT SUM(t1.数量) as 数量,AVG(t1.合计) as 平均 FROM (SELECT 姓名,SUM(数量) as 数量,SUM(单价*数量) as 合计 FROM TT GROUP BY 姓名)t1
只有本站会员才能查看附件,请 登录
#5
dunnys2022-07-11 09:37
回复 4楼 mywisdom88
你好
我是要用最后一项“合计”的总数除以人数,如果按照表格的格式用SQL写出来,可否帮忙写详细点。

感谢!
只有本站会员才能查看附件,请 登录


#6
mywisdom882022-07-11 12:23
问题是,你合计,不对,1.25*15=18.75,不是你的16.25
#7
mywisdom882022-07-11 12:29
排除你合计不对的话,你要用合计,可以这样
SELECT Count(1) as 人数,SUM(t1.数量) as 数量,Sum(合计) as 合计,AVG(t1.合计) as 平均 FROM (SELECT 姓名,SUM(数量) as 数量,SUM(合计) as 合计 FROM TT GROUP BY 姓名)t1
显示结果大概是这样
人数   数量   合计    平均
3      384    401.23  133.74
其中,合计,平均数是错误的

[此贴子已经被作者于2022-7-11 12:32编辑过]

#8
my23182022-07-11 18:07
Select distinct count(姓名)as 人数 from 表
Select sum(合计)as 总工资  from 表
?总工资/人数
#9
dunnys2022-07-11 19:59
回复 7楼 mywisdom88
你好
谢谢你的提醒,合计确实是错的,在你提供的SQL语法里可否添加人员名单和数量,类似于表格的形式列出来呢,因为就只有这一行数据是没有意义的。

感谢!
#10
mywisdom882022-07-12 08:30
你想怎么显示,用EXCEL等,表示出来看看。
#11
mywisdom882022-07-12 08:38
以下是引用my2318在2022-7-11 18:07:57的发言:

Select distinct count(姓名)as 人数 from 表
Select sum(合计)as 总工资  from 表
?总工资/人数

你这个是VFP格式的,但就算是VFP也是错误的。
Select count(distinct 姓名)as 人数 from 表 into cursor t1 && 这样,才会去掉重复的姓名
Select sum(合计)as 总工资  from 表 into cursor t2
?t2.总工资/t1.人数

[此贴子已经被作者于2022-7-12 10:03编辑过]

#12
mywisdom882022-07-12 10:14
-- 方法1,由于合计不对,要重新算合计
SELECT 姓名,SUM(数量) as 数量,SUM(单价*数量) as  合计,
  (SELECT SUM(单价*数量) / COUNT(DISTINCT 姓名)  FROM 你表) 平均
FROM 你表 GROUP BY 姓名


-- 方法2,由于合计不对,要重新算合计 用AVG()
SELECT 姓名,SUM(数量) as 数量,SUM(单价*数量) as  合计,
  (SELECT AVG(t1.合计) as 平均 FROM (SELECT SUM(单价*数量) as 合计 FROM 你表 GROUP BY 姓名)t1) 平均
FROM 你表 GROUP BY 姓名

[此贴子已经被作者于2022-7-12 10:16编辑过]

#13
dunnys2022-07-14 16:11
回复 12楼 mywisdom88
非常感谢你的技术支持,现在按照你的语法已经可以满足需求。

谢谢!
1