PostgreSQL - 如何使用外键聚合数据?
Posted
技术标签:
【中文标题】PostgreSQL - 如何使用外键聚合数据?【英文标题】:PostgreSQL - How to get aggregation of data with foreign keys? 【发布时间】:2017-10-21 19:46:39 【问题描述】:我将概述我的目标:
我有用户,他们是体育联盟的球员。
我有一张名为“seasons”的运动季节表。
我有一个游戏表,其中包含各种属性,例如游戏是否完成等,还包含一个 season_id。
我有一个“统计线”表,其中包含相关游戏的外键。为简单起见,假设 stat_lines 表只包含进球、助攻、game_id、season_id 和 user_id。
因此,假设 Sidney Crosby 是一个 id=1 的用户,并且有一个进球数=2、助攻数=3、game_id=4、season_id=1 和 user_id=1 的统计数据行。
我最终想要的是每个球员的赛季总数:
播放器 季节 目标 助攻 积分
1 (Crosby) - 第 1 - 10 - 12 - 22 季
1 (克罗斯比) - 第 2 - 10 - 10 - 20 季
2 (Bergeron) - 第 1 季 - 0 - 4 - 4
我不知道该怎么做。
感觉我需要进行两次 GROUP BY 调用,但我不知道该怎么做。
【问题讨论】:
【参考方案1】:不就是这样
SELECT user_id, season_id, sum(goals), sum(assists), sum(goals) + sum(assists)
FROM stat_lines
GROUP BY user_id, season_id
ORDER BY user_id, season_id;
?
【讨论】:
天哪。谢谢你。我显然对 SQL 很陌生。我习惯了 Ruby on Rails,它抽象了 SQL,但我希望通过数据库视图来提高效率。再次感谢您,我很感激。当计时器允许时,我会确保将您的答案标记为正确。以上是关于PostgreSQL - 如何使用外键聚合数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在PostgreSQL中将状态日志数据聚合成具有相同状态的时间间隔?