2012-07-20 157 views
0

您可能需要一些板球知识来帮助解决这个问题。鉴于下表,这个查询会产生这个结果吗?击球平均MySQL查询

Table: batsmen 
batsmanname | runsscored | howout 
Colin  | 10   | bowled 
Colin  | 20   | caught 
Steve  | 10   | bowled 
Steve  | 20   | not out 

SELECT batsmanname, SUM(runsscored)/COUNT(howout) AS battingavg 
FROM batsmen 
WHERE howout <> 'not out' 
GROUP BY batsmananme 

Result: 
batsmanname | battingavg 
Colin  | 15 
Steve  | 30 
+0

* * - 你试试吧 “将这个查询产生这样的结果?”? (它看起来似乎有道理,但'AS'似乎在错误的地方) – Flexo 2012-07-20 15:05:30

回答

1

这将产生你想要的结果:

SELECT b1.name, SUM(b1.runsscored)/b2.NumOut as bat_avg 
FROM batsmen b1 
INNER JOIN 
(
    select name, COUNT(howout) as NumOut 
    from batsmen 
    WHERE howout <> 'not out' 
    GROUP BY name 
) b2 
    ON b1.name = b2.name 
GROUP BY b1.name 

SQL Fiddle with demo

+0

谢谢。 b1和b2是指什么? – 24ma13wg 2012-07-20 15:27:14

+0

他们是击球手表的别名。我正在使用b1/b2来引用数据来自哪里 – Taryn 2012-07-20 15:28:03

+0

我会给它一个。谢谢。 – 24ma13wg 2012-07-20 15:36:43