当前位置: 首页 > 面试题库 >

SQL查询中Select的语法

夏侯朝斑
2023-03-14
问题内容

我有一个带下表的sqlite数据库:

CREATE TABLE games (name text, date text, winloss int, gameid int, pointsfor int, pointsagainst int);

两个示例记录如下所示:

Anna A, 7/12/13, 0, 345, 56, 28
Barley B, 7/12/13, 1, 345, 28, 56

(大麦的球队输了,安娜的赢了。每场比赛每队都有几名球员。)我想创建一个查询,该查询将返回所有有x个玩家在一个团队而y个玩家在另一个团队的游戏,以及这些游戏的累积结果。游戏。

我知道如何使用perl和csv文件来执行此操作,并且我相信我可以对dbi接口使用相同的方法。但是,我想学习如何仅使用SQL查询来创建此报告。我是SQL的新手,我怀疑该解决方案可能涉及使用CASE
WHEN或JOIN旋转表以创建新表。但我看不到该怎么做。

此查询将返回所有玩家所在的团队并赢得(或失败,取决于winloss的值)的所有游戏:

select gameid,date from games
where name in ('Anna A', 'Barley B') and winloss=1 
group by gameid 
having count(*)>1;

但是我不知道如何概括该查询以返回与另一支球队的球员的比赛。


问题答案:

这将为您提供A和B胜过C,D和E的所有游戏路线。

select * 
from games 
where gameid in    
    (select gameid from games
        where name in ('Anna A', 'Barley B') and winloss=1 
        group by gameid 
        having count(*) = 2
    intersect
     select gameid from games
        where name in ('Charly C', 'Dave D', 'Ed E') and winloss = 0 
        group by gameid 
        having count(*) = 3) ;

或者,您可以使用:

select *
from games where gameid in (
    select gameid from games where name = 'Anna A'   and winloss = 1   intersect
    select gameid from games where name = 'Barley B' and winloss = 1   intersect 
    select gameid from games where name = 'Charly C'   and winloss = 0 intersect
    select gameid from games where name = 'Dave D' and winloss = 0     intersect
    select gameid from games where name = 'Ed E' and winloss = 0
    ) ;

最适合您的。

然后sum,您可以添加和group by以获得累积结果。



 类似资料:
  • 问题内容: 我有这个查询,我想选择那个选择的反函数。 有没有简单的方法可以解决我的问题? 问题答案: 只需使用以下查询:

  • 我现在在大学学习数据库,在我的项目中,我有3个表:、和 联赛(leagueId,leagueName) 团队(teamId,teamName) 具有(leagueId,teamId,year)

  • 我正在尝试为我的网站创建一个最喜欢的系统。我有一个用户表、作业表和一个收藏夹表。当用户将作业添加到他们的收藏夹中时,他们的用户ID和jobsId将保存到favorites表中。当用户想要查看他们的收藏夹时,我一直试图选择favorites表中与当前用户具有相同userId的所有行。然后,我需要从这些行中选择JobID,并选择job表中具有匹配JobID的所有行。 我一直在尝试这个查询的变体,但没有

  • 我在寻找一个特定点周围的距离。 我在我的数据库中有这些项目,带有lat和long。 我想得到指定半径范围内的所有结果。 我就是这样得到的: 现在它给了我一个错误: SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第4行(SQL:select*,(6371*acos(cos(radians(51,3))*cos(radia

  • 问题内容: 我很难编写一个SELECT查询以获取下表中的数据… 这是桌子的照片… http://i44.tinypic.com/29dxx81.png 我正在尝试显示数量大于10的所有项目零件的零件名称(pname)。但是,数量似乎仅在子菜单展开时出现,并且我在选择它时遇到了麻烦… 谢谢 问题答案: 你有没有尝试过: 编辑:

  • select 数据库查询select($table, $columns, $where) table [string] 表名. columns [string/array] 要查询的字段名. where (optional) [array] 查询的条件.select($table, $join, $columns, $where) table [string] 表名. join [array] 多