我有一個問題,所有的SQL專家。SQL查詢和子查詢
有表看起來像:
clanname country points
name1 country1 100
name2 country1 90
name3 country1 10
name4 country2 100
name5 country2 80
name6 country2 70
我想作一個國家的排名只涉及每個國家的前2項結果。所以,在這個例子中,排名應該是:
country average-points
country2 95
country1 90
如果有一種方式來獲得這個結果與使用子查詢只有一個SQL查詢?
在現實中,我有超過200個國家..和成千上萬的結果爲每個國家。但我只想過濾每個國家的前30個結果。
現在我設法得到一個國家的使用此查詢平均:
SELECT
location, AVG(warswon)
FROM
(SELECT
`name`, `location`, `warswon`
FROM
`clans`
WHERE
location = 'China'
ORDER BY
`clans`.`warswon` DESC
LIMIT 30) AS top30ofcountry
,但我怎麼得到每個國家的平均結果在一個查詢?
這可能嗎?
GROUP BY [字段名] –
末'GROUP BY添加location' – Mihai
爲什麼你需要爲這個子查詢? –