R 用SQLite连接数据库
我有4个关于美洲杯的数据库R 用SQLite连接数据库,r,database,sqlite,R,Database,Sqlite,我有4个关于美洲杯的数据库 SELECT * FROM teams > Code | Country | TeamName ITA |Italy | Luna Rossa Prada Pirelli Team NZ |New Zealand | Emirates Team New Zealand UK |United Kingdom |
SELECT * FROM teams
>
Code | Country | TeamName
ITA |Italy | Luna Rossa Prada Pirelli Team
NZ |New Zealand | Emirates Team New Zealand
UK |United Kingdom | INEOS Team UK
USA |United States of America | NYYC American Magic
4 rows
SELECT * FROM races
>
Race Tournament Date Racedate
RR1R1 RR 15-Jan 18642
RR1R2 RR 15-Jan 18642
RR1R3 RR 16-Jan 18643
RR2R1 RR 16-Jan 18643
RR2R2 RR 17-Jan 18644
RR2R3 RR 17-Jan 18644
RR3R1 RR 23-Jan 18650
RR3R2 RR 23-Jan 18650
RR3R3 RR 23-Jan 18650
SFR1 SF 29-Jan 18656
1-10 of 31 rows
SELECT * FROM tournaments
>
Tournament Event TournamentName
RR Prada Cup Round Robin
SF Prada Cup Semi-Final
F Prada Cup Final
AC America's Cup Americas Cup
4 rows
SELECT *
FROM results
>
Race Code Result
FR1 ITA Win
FR1 UK Loss
FR2 UK Loss
FR2 ITA Win
FR3 UK Loss
FR3 ITA Win
FR4 ITA Win
FR4 UK Loss
FR5 ITA Win
FR5 UK Loss
1-10 of 62 rows
我正在尝试编写一个SQL查询,它将输出每个队在锦标赛中赢得的比赛数,并显示输出。输出表应包括事件的全名、锦标赛和每个队的全名。我目前的问题如下:
SELECT TeamName, Result, Event, tournaments.Tournament
FROM teams LEFT JOIN results
ON teams.Code = results.Code
LEFT JOIN races
ON results.Race = races.Race
LEFT JOIN tournaments
ON races.Tournament = tournaments.Tournament
WHERE Result = 'Win'
ORDER BY tournaments.Tournament
哪些产出:
TeamName Result Event Tournament
Emirates Team New Zealand Win America's Cup AC
Emirates Team New Zealand Win America's Cup AC
Luna Rossa Prada Pirelli Team Win America's Cup AC
Luna Rossa Prada Pirelli Team Win America's Cup AC
Emirates Team New Zealand Win America's Cup AC
Luna Rossa Prada Pirelli Team Win America's Cup AC
Emirates Team New Zealand Win America's Cup AC
Emirates Team New Zealand Win America's Cup AC
Emirates Team New Zealand Win America's Cup AC
Emirates Team New Zealand Win America's Cup AC
当我尝试将(结果)计数为NumberOfWins时,我得到:
TeamName Result NumberOfWins Event Tournament
Luna Rossa Prada Pirelli Team Win 31 Prada Cup F
1 row
为什么加上计数只算卢娜·罗萨的胜利?如何更改查询以修复它
为什么加上计数只算卢娜·罗萨的胜利
Count()是一个聚合函数,每个组生成一个结果
由于没有GROUPBY
子句,因此整个结果集是一个组,因此是一个结果
- 你获得锦标赛F的原因是
- 如果SELECT语句是没有GROUP BY子句的聚合查询,则在整个数据集中对结果集中的每个聚合表达式求值一次结果集中的每个非聚合表达式对数据集的任意选定行计算一次。每个非聚合表达式都使用相同的任意选定行。或者,如果数据集包含零行,则每个非聚合表达式将根据完全由空值组成的行进行求值。依照-
GROUPBY
子句。创建count()函数将处理的组
您可能需要按锦标赛分组,球队名称
e、 g
为什么要使用标签?我在R中使用SQLite。不合适吗?问题是基于SQL的,您所有的示例数据和代码都是SQL,您会问如何使用SQLite获得它。无论您是通过R、python还是ruby访问sqlite数据库,仍然是关于sqlite的问题。留着吧,我不在乎,也许有人懂SQL,但不懂。
SELECT TeamName, Result, Event, tournaments.Tournament, count(*)
FROM teams LEFT JOIN results
ON teams.Code = results.Code
LEFT JOIN races
ON results.Race = races.Race
LEFT JOIN tournaments
ON races.Tournament = tournaments.Tournament
WHERE Result = 'Win'
GROUP BY Tournament,Teamname
ORDER BY tournaments.Tournament