计算足球运动员之间互动的统计数据
Calculating statistics of interactions between football players
我有一些足球运动员之间的 table 踢球。大多数互动都有踢球者和接球者,但有时会传球但从未接球。 table 包含 3 列。为了示例的目的,我添加了一个“PassID”列来帮助描述问题。
table 看起来如下:
create table #T (Player1 varchar(25),Action varchar(25),Player2 varchar(25),PassID int)
insert into #T select 'Jamie','Kicked to','Pierre',1
insert into #T select 'Pierre','Received from ','Jamie',1
insert into #T select 'Jamie','Kicked to ','Mohamed',2
insert into #T select 'Jamie','Received from ','Kun',3
insert into #T select 'Kun ','Kicked to','Jamie',3
insert into #T select 'Mohamed','Received from ','Pierre',4
insert into #T select 'Pierre','Kicked to','Mohamed',4
insert into #T select 'Mohamed','Kicked to','Kun',5
insert into #T select 'Jamie ','Kicked to ','Kun',6
insert into #T select 'Kun ','Received from ','Jamie',6
insert into #T select 'Jamie','Received from ','Kun',7
insert into #T select 'Kun ','Kicked to','Jamie',7
我必须使用 SQL 服务器回答以下问题:
存在多少独特的互动,其中独特的互动被定义为两名球员之间的踢球,无论是否完成,互动的方向无关紧要?
在这个简单的例子中,我知道答案是 5,即:
Jamie/Pierre
Jamie/Mohamed
Jamie/Kun
Mohamed/Pierre
Mohamed/Kun
如何使用 T-SQL 语句从 table 中提取此答案?
SELECT COUNT(DISTINCT CASE
WHEN Player1 > Player2 THEN CONCAT(Player1,'+',Player2)
ELSE CONCAT(Player2,'+',Player1)
END )
FROM #T
WHERE Action = 'Kicked To';
这是一个SQL Fiddle
试试下面的代码。
Select CONCAT(x.Player1,'/',x.Player2)Title from (
Select *,ROW_NUMBER() over (PARTITION by passid order by passid)Row from #T
)X
where Row=1
我有一些足球运动员之间的 table 踢球。大多数互动都有踢球者和接球者,但有时会传球但从未接球。 table 包含 3 列。为了示例的目的,我添加了一个“PassID”列来帮助描述问题。
table 看起来如下:
create table #T (Player1 varchar(25),Action varchar(25),Player2 varchar(25),PassID int)
insert into #T select 'Jamie','Kicked to','Pierre',1
insert into #T select 'Pierre','Received from ','Jamie',1
insert into #T select 'Jamie','Kicked to ','Mohamed',2
insert into #T select 'Jamie','Received from ','Kun',3
insert into #T select 'Kun ','Kicked to','Jamie',3
insert into #T select 'Mohamed','Received from ','Pierre',4
insert into #T select 'Pierre','Kicked to','Mohamed',4
insert into #T select 'Mohamed','Kicked to','Kun',5
insert into #T select 'Jamie ','Kicked to ','Kun',6
insert into #T select 'Kun ','Received from ','Jamie',6
insert into #T select 'Jamie','Received from ','Kun',7
insert into #T select 'Kun ','Kicked to','Jamie',7
我必须使用 SQL 服务器回答以下问题: 存在多少独特的互动,其中独特的互动被定义为两名球员之间的踢球,无论是否完成,互动的方向无关紧要?
在这个简单的例子中,我知道答案是 5,即: Jamie/Pierre Jamie/Mohamed Jamie/Kun Mohamed/Pierre Mohamed/Kun
如何使用 T-SQL 语句从 table 中提取此答案?
SELECT COUNT(DISTINCT CASE
WHEN Player1 > Player2 THEN CONCAT(Player1,'+',Player2)
ELSE CONCAT(Player2,'+',Player1)
END )
FROM #T
WHERE Action = 'Kicked To';
这是一个SQL Fiddle
试试下面的代码。
Select CONCAT(x.Player1,'/',x.Player2)Title from (
Select *,ROW_NUMBER() over (PARTITION by passid order by passid)Row from #T
)X
where Row=1