【问题标题】:SQL statement to find for each match查找每个匹配项的 SQL 语句
【发布时间】:2013-03-27 18:31:57
【问题描述】:

现在是 IPL 季节。以下是 IPL 匹配数据库关系:

Player(playerid, name, playsfor):包含每个球员和他效力的球队的详细信息。 Playsfor 在 Team 表中引用 teamid。

Team(teamid, teamname):包含团队 ID 和团队名称。

Playerbat(playerid, matchid, runsscored,teamid):包含球员在每场比赛中的得分。仅当玩家在比赛中上场时才会为该玩家排一排。

Playerbowl(playerid, matchid, wicketstaken,teamid):包含球员在每场比赛中的三柱门。仅当玩家在比赛中上场时才会为该玩家排一排。

PlayersmatchDetails (Playerid, Matchid):包含参加比赛的球员姓名。

使用上面的表格,写一条 SQL 语句来查找每场比赛的每支至少打过一场比赛的球队的总得分。

注意 1:要在结果或输出中显示的列应该是 matchid 和 Runs only。

注意2:在编写SQL查询时,需要将表名写成schemaname.tablename(例如employee.projectDetails,其中employee是schemaname,projectDetails是tablename)。

【问题讨论】:

  • 如果您只显示matchidruns,您如何表示每支球队的总得分。你的架构名称是什么? IPL?
  • 请提供您想要的结果的示例表。
  • 看起来像一个家庭作业。你试过什么?

标签: sql


【解决方案1】:

我根据 Note1 和 Note2 做了几个假设。

注意 1:您声明您只需要 matchid 和 Runs 列,但描述中说的是每个团队的得分,因此您还需要在输出中包含团队,所以我的答案包含 matchid、teamname、Runs as输出。

注意 2:您没有指定模式名称,因此我假设所有表都位于名为 schemaname 的模式中。您需要将其替换为正确的架构名称。

SELECT pb.matchid, t.teamname, SUM(pb.runsscored) as Runs
FROM schemaname.Playerbat pb
INNER JOIN schemaname.Team t ON t.teamid = pb.teamid
GROUP BY pb.matchid, t.teamname
ORDER BY t.teamname, pb.matchid

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2011-09-05
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多