【问题标题】:Counting rows with some constrain in PostgresSQL在 PostgresQL 中计算具有一些约束的行
【发布时间】:2021-05-28 01:24:00
【问题描述】:

我有一张桌子

我想计算投球手在一场比赛中的三柱门数量,我知道这是一个微不足道的查询,但我几乎被困在这里。 有具有唯一 id 的比赛,并且在每场比赛中,有一个投球手(id)在 over(over_id) 和球 no(ball_id) 上取一个三柱门,投球手可以投几个球,并且可以在这些上取三柱门,我想要汇总特定比赛中的三柱门数

在 cmets 中解决

【问题讨论】:

  • 您可以进行选择查询。您的问题需要一些保龄球知识,例如什么是三柱门。假设它类似于“金额”,您可以简单地执行以下操作: select sum(wickets) from myTable where match_id = 335987 and bowler = 82;
  • 实际上我想计算每场比赛的三柱门,而不是单一的固定比赛,例如 match-335987、 Bowler-82、wicket_taken-3 类似的所有比赛和投球手组合
  • 然后添加分组依据。它是 SQL 基础的一部分,您可以在 w3schools.com 上查看。根据 match_id, bowler 从 myTable 组中选择 match_id, bowler, sum(wickets) 作为 totalWickets;顺便说一句,这里注意以文本而不是图片的形式提供示例数据。
  • 非常感谢这就是我想要的,我真的被困在这里无法弄清楚。
  • @Cetin 更多信息,如果我想返回 player_name 而不是 bowler_id ,它与 player_name 和 player_id 存储在另一个表中,我正在尝试与 mytable.bowler = player_detail.player_id 连接,一种可能性是创建一个函数,该函数将返回带有输入 player_id 的 player_name,但我们可以这样做。

标签: postgresql group-by aggregate


【解决方案1】:

我决定写这个作为答案,因为它在 cmets 中变得一团糟:

select p.player_id, p.player_name, t.match_id, t.wickets
from player_detail p 
inner join
(Select match_id, bowler, sum(wickets) as totalWickets 
 from myTable group by match_id, bowler) t ON p.player_id = t.bowler
order by p.player_name, t.match_id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 2014-12-16
    • 2015-09-21
    • 1970-01-01
    • 2019-06-15
    • 2014-09-10
    • 1970-01-01
    相关资源
    最近更新 更多