Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 寻找平均最高工资_Mysql_Sql - Fatal编程技术网

Mysql 寻找平均最高工资

Mysql 寻找平均最高工资,mysql,sql,Mysql,Sql,编写一个查询,使用给定的表查找所有销售人员中最高的平均销售额 Table: Sales Field Type InvoiceNo Integer SalesPerson Text TotalSale Integer 样品 InvoiceNo SalesPerson TotalSale 1 Acheson 50 2 Bryant 25 3 Bennett 250 4

编写一个查询,使用给定的表查找所有销售人员中最高的平均销售额

Table: Sales

Field       Type
InvoiceNo   Integer
SalesPerson Text
TotalSale   Integer
样品

InvoiceNo   SalesPerson  TotalSale
1           Acheson      50
2           Bryant       25
3           Bennett      250
4           Acheson      50
5           Bryant       100
6           Bennett      250
样本输出

max(totalsale)
250.0000
我尝试使用:
从Sales中选择MAX(TotalSale)
。我的样本测试用例输出是250,但在一个在线法官的裁决中给出了错误的答案。 另外,当我将查询更改为:
selectmax(TotalSale*1.0000)fromsales
时,我得到了示例测试用例的正确答案,但对于其他测试用例仍然是错误的答案

这里的平均数是什么意思?问题应该是什么


此外,这不是来自任何正在进行的竞争。这是一个您可以在此处尝试的实践测试:

平均销售额将使用
avg()
函数:

select salesperson, avg(totalsale) as avg_totalsale
from sales
group by salesperson;
平均值的最大值可以使用
按顺序
限制
获得:

select avg(totalsale) as avg_totalsale
from sales
group by salesperson
order by avg_totalsale desc
limit 1;

1.首先,您必须使用AVG函数计算每个销售人员的平均TotalSale

SELECT SalesPerson, AVG(TotalSale) AS 'TotalSale' 
FROM Sales 
GROUP BY SalesPerson
2.从上述查询生成的表中找出最大值

SELECT MAX(avgSales.TotalSale)
FROM (SELECT AVG(TotalSale) AS 'TotalSale' FROM Sales GROUP BY SalesPerson) AS avgSales

下面是另一个答案:

select avg(TotalSale) 
from Sales 
group by SalesPerson 
order by totalSale desc limit 1;
输出:

avg(TotalSale)
250.0000
输出:

MaxtTotal
250.0000

对@gordon linoff的答案进行了微小更改,以通过示例测试用例

select CAST(avg(totalsale) AS DECIMAL(16,4)) as avg_totalsale
from sales
group by salesperson
order by avg_totalsale desc
limit 1;

以上部分将限制小数点后零位最多为4。将250.00000000转换为250.0000

我是SQL新手。你介意我解释一下这些吗?为什么您按销售人员分组,而不是发票否或总销售额?极限1的作用是什么?@RizwanAnsari。阅读问题并思考SQL。因为您的任务告诉您在所有销售人员中找到最大平均销售额。同一个人有多条记录,但它们的InvoiceNo不同,因此不能按InvoiceNo分组,因为没有具有相同InvoiceNo的记录,因此将不会进行分组。唯一不变的是销售人员的价值。这部分是正确的。最好的答案是Vikas Garg的,应该在顶部。这个答案似乎与另一个答案相同。重复其他答案中的信息是没有用的,只是杂乱无章。对旧问题和已回答问题的新答案应该为主题添加新信息和新见解。这项工作非常有效,应该处于最佳位置。向上投票。
SELECT max(avgsale.TotalSale) 
FROM (Select Cast(Round(Avg(TotalSale),2) as dec(10,4)) 'TotalSale' from Sales 
GROUP BY salesPerson) avgsale
select CAST(avg(totalsale) AS DECIMAL(16,4)) as avg_totalsale
from sales
group by salesperson
order by avg_totalsale desc
limit 1;
CAST(avg(totalsale) AS DECIMAL(16,4))