2

我是 sql 新手,在我的应用程序中,我使用的是 sqlite DB,但在创建查询时遇到了麻烦。

我有一个列名的数据库:

Name1  Name2  Score1  Score2 Winner  Aces1  Aces2

想象一下,这些是单个游戏的统计数据,因此相同的名称可以在名称 1 中或名称 2 中的不同行中。

我想要以下内容:

a) 在列表中返回具有 A 数递减的玩家姓名。

例如想象这些行:

Nick George 39  35  Nick  2   4
Joe  Nick   17  39  Nick  1   0
George Jorge  11  39  Jorge  3  1 

应该在列表中给我以下内容://数字或ace

George 7
Nick 2
Joe 1
Jorge 1

b)我想要相同的获胜次数。

c)和相同的平均点。

请问可以给我查询吗?

4

2 回答 2

4

您的问题是以非规范化形式存储数据的结果。如果您阅读了数据规范化,那么您将以更易于生成这些查询的形式存储数据。

select Winner, COUNT(*) from yourtable group by Winner order by COUNT(*) desc

select name, SUM(aces)
from
(
select Name1 as Name, Score1 as Score, Aces1 as Aces from yourtable
union all
select Name2 as Name, Score2 as Score, Aces2 as Aces from yourtable
) v
group by Name
order by SUM(aces) desc

平均分留给读者作为练习。

于 2012-09-20T10:44:08.783 回答
0

select name, SUM(aces) from ( select Name1 as Name, Score1 as Score, Aces1 as Aces from yourtable union all select Name2 as Name, Score2 as Score, Aces2 as Aces from yourtable ) v group by Name order by SUM(aces)描述

于 2012-09-20T13:03:43.990 回答