如何MELT SQL表?

问题描述 投票:0回答:2

我有以下SQL表,让我们称之为teams_score,它显示了一个游戏的2个玩家团队和他们的分数。我需要观察每个球员每次出现在球队中的得分,作为Player2的Player1。我觉得这就像融化一样。

Player1,         Player2,          TeamScore
"Johnny Onspot", "Pat Magroin",     95
"Pepe Roni",     "Cole Kutz",       78
"Ben Dover",     "Ibin Yerkinoff",  76
"Johnny Onspot", "Frumunda Mabalz", 69
"Sal Lami",      "Cole Kutz",       65
"Pat Magroin",   "Frumunda Mabalz", 63

我想找到平均得分最高的前三名球员。

例如,“Pat Magroin”出现在2支球队中,得分为95分和63分,平均得分为79分

所以我需要显示如下所示的表“player_score”,然后按平均分数进行汇总。我如何获得桌面球员_得分低于?

Player,            Score
"Ben Dover",       76
"Cole Kutz",       78
"Cole Kutz",       65
"Frumunda Mabalz", 69
"Frumunda Mabalz", 63
"Ibin Yerkinoff",  76
"Johnny Onspot",   95
"Johnny Onspot",   69
"Pat Magroin",     95
"Pat Magroin",     63
"Pepe Roni",       78
"Sal Lami",        65

一旦我有了player_score,我应该能够运行查询(如下所示)来获取表result_table,如下所示。

SELECT Player, AVG(Score) AS Avg_Score FROM player_score
GROUP BY Player
ORDER BY Avg_Score DESC
LIMIT 3;

Player,            Avg_Score
"Johnny Onspot",   82
"Pat Magroin",     79
"Pepe Roni",       78
sqlite melt
2个回答
0
投票

你可以使用UNION ALL

SELECT Player, AVG(score) AS avg_score
FROM(SELECT Player1 AS player, Score FROM player_score
     UNION ALL SELECT Player2, Score FROM player_score) sub
GROUP BY Player
ORDER BY avg_Score DESC
LIMIT 3;

0
投票
CREATE TABLE player_score AS SELECT Player1 AS Player, TeamScore AS Score FROM(
SELECT Player1, TeamScore
FROM teams_score
UNION ALL
SELECT Player2, TeamScore
FROM teams_score);

-- Delete duplicate rows where player and score are the same in both rows
DELETE FROM player_score WHERE rowid NOT IN 
(SELECT min(rowid) FROM player_score GROUP BY Player, Score);
© www.soinside.com 2019 - 2024. All rights reserved.