【发布时间】:2016-05-20 01:40:05
【问题描述】:
我有一个 SQLite 数据库,用于跟踪有关棋盘游戏的信息(名称、发布年份、机制、发行商、在 www.boardgamegeek.com 上拥有该游戏的人数,以及 boardgamegeek 目前对该游戏的排名)。架构是:
我有兴趣为特定出版商获取每年最受欢迎的机制(拥有最多副本的机制)。我目前的查询是:
select games.year as yr, mechanics.name as mech, sum(collection.owned) as sm
from games
inner join gamemech on games.bggid = gamemech.bggid
inner join mechanics on gamemech.mechid = mechanics.mechid
inner join gamepub on gamepub.bggid = games.bggid
inner join publishers on publishers.pubid = gamepub.pubid
inner join collection on collection.bggid = games.bggid
where publishers.name like '%stronghold%'
group by yr, mech order by yr limit 20;
这会返回:
1974|Commodity Speculation|1460
1974|Dice Rolling|1460
1974|Tile Placement|1460
1982|Action Point Allowance System|16111
1982|Dice Rolling|16111
1982|Modular Board|16111
1982|Secret Unit Deployment|16111
1985|PaperandPencil|1949
1991|Auction/Bidding|1266
1992|Grid Movement|1704
1992|Pickup and Deliver|1704
2011|Action Point Allowance System|7943
2011|Area Control / Area Influence|174
2011|Area Movement|3607
2011|Auction/Bidding|174
2011|Card Drafting|5133
2011|Deck / Pool Building|3768
2011|Dice Rolling|2385
2011|Hand Management|5663
2011|Line Drawing|2141
我真正感兴趣的只是年份、机制以及每年拥有最高金额的机制所拥有的副本总和。像这样(但是可以打破关系):
1974|Commodity Speculation|1460
1982|Action Point Allowance System|16111
1985|PaperandPencil|1949
1991|Auction/Bidding|1266
1992|Grid Movement|1704
2011|Action Point Allowance System|7943
我想我可能需要在查询中使用另一个 select 语句,但我似乎无法让它工作。有什么建议吗?
【问题讨论】: