繁体   English   中英

MySQL查询来计算板球击球手平均值

[英]mysql query to calculate cricket batsman average

我有一个mysql表,其中包含这样的数据。

Name    |how_out    |runs
------------------------------
Robin   |Not out    |45
Robin   |lbw        |25
Robin   |caught     |50
Robin   |caught     |0
Robin   |bowled     |30
Robin   |bowled     |0
.
.
.

我想要一个SQL查询,该查询返回以下列

名称,总运行次数,平均值

听起来很简单,但是对我来说唯一的问题是。 在板球比赛中,平均值并非总和(奔跑)/计数(*),而是总和(奔跑)/局数计数,其中how_out不是“ Not out”

有人可以告诉我如何编写这样的查询吗?

由于明显的原因,我写的查询给出了错误的平均值。 我写的查询是

Select `Name`,sum(`runs`) as 'Total_runs', Sum(`runs`)/count(*)
From `batsman_stats`
group by `Name`
order by 2 desc

sql专家可以帮我吗?

谢谢

Select `Name`,sum(`runs`) as 'Total_runs', Sum(`runs`)/sum(if(how_out <> 'Not out',1,0))
From `batsman_stats`
group by `Name`
order by 2 desc

我认为您需要一个子选择:

Select Name, sum(runs) as Total_runs, Sum(runs)/(
   select count(*) from batsman_stats b
   where b.Name=a.Name and not b.how_out = 'Not out'
)
From batsman_stats a
group by Name
order by 2 desc

您可以使用CASE语句

SELECT Name,
       SUM(Runs) as Total_runs, 
       SUM(Runs)/COUNT(CASE WHEN how_out <> 'Not out' THEN 1 END) as Average
FROM batsman_stats
GROUP BY Name
ORDER BY SUM(Runs) DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM