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

复杂的MS Access Greatest-N-Per-Group问题

潘星阑
2023-03-14
问题内容

我想将以下查询合并为一个,其中

  • scouting.jumpGate是整数,
  • scouting.astroLoc是一个字符串,
  • scouting.ownerguild是一个字符串,并且
  • scouting.galaxy是一个整数

交叉链接到另一个表(也是我的GROUP):

    Select TOP 3 
        scouting.jumpGate, 
        scouting.astroLoc, 
        scouting.ownerGuild, 
        scouting.Galaxy 
FROM    scouting 
WHERE   scouting.Galaxy = 1 
AND     scouting.ownerGuild = 'TEST' 
ORDER BY    scouting.jumpGate DESC, 
            scouting.astroloc DESC;

    SELECT TOP 3 
        scouting.jumpGate, 
        scouting.astroLoc, 
        scouting.ownerGuild, 
        scouting.Galaxy 
FROM    scouting 
WHERE   scouting.Galaxy = 2 
AND     scouting.ownerGuild = 'TEST' 
ORDER BY    scouting.jumpGate DESC, 
            scouting.astroloc DESC;

    SELECT TOP 3 
        scouting.jumpGate, 
        scouting.astroLoc, 
        scouting.ownerGuild, 
        scouting.Galaxy 
FROM    scouting 
WHERE   scouting.Galaxy = 3 
AND     scouting.ownerGuild = 'TEST' 
ORDER BY    scouting.jumpGate DESC, 
            scouting.astroloc DESC;

持续到

    SELECT TOP 3 
        scouting.jumpGate, 
        scouting.astroLoc, 
        scouting.ownerGuild, 
        scouting.Galaxy 
FROM    scouting 
WHERE   scouting.Galaxy = 79 
AND     scouting.ownerGuild = 'TEST' 
ORDER BY    scouting.jumpGate DESC, 
            scouting.astroloc DESC;

在Microsoft网站上阅读此“每组最大N”问题后生成的代码如下:

Select  scouting.astroLoc, 
        scouting.galaxy, 
        scouting.jumpGate, 
        scouting.ownerGuild 
From    galaxy Inner Join 
        scouting On galaxy.[galaxy_ID] = scouting.galaxy 
Where   scouting.ownerGuild = 'SWARM' 
AND     (scouting.jumpGate) In (Select Top 3 scouting.jumpGate From scouting Where scouting.galaxy = galaxy.[galaxy_ID] Order By scouting.jumpGate Desc) 
Order By    scouting.astroLoc Desc, 
            scouting.jumpGate Desc

基本上,这与我想要的非常接近。一切似乎都正常。但是,即使在盯着数据看之后,某些GROUPS仍未在输出中表示,每个组都有一条满足查询约束的记录。顺便说一句,如果我删除了scouting.ownerGuild=’SWARM’约束,它会很好地工作(但是我需要这个约束)。


问题答案:

怎么样:

Select  scouting.astroLoc, 
        scouting.galaxy, 
        scouting.jumpGate, 
        scouting.ownerGuild 
From    galaxy Inner Join 
        scouting On galaxy.[galaxy_ID] = scouting.galaxy 
WHERE   (scouting.ID) In (
             Select Top 3 scouting.ID
             From scouting 
             Where scouting.galaxy = galaxy.[galaxy_ID] 
             And scouting.ownerGuild = 'SWARM' 
             Order By scouting.jumpGate Desc) 
Order By    scouting.astroLoc Desc, 
                scouting.jumpGate Desc

否则,似乎前三名可能会包含一些

  where scouting.ownerGuild <> 'SWARM'


 类似资料:
  • 如果你曾经了解过依赖注入,那么你可能见过 “控制反转”(Inversion of Control) 或者 “依赖反转准则”(Dependency Inversion Principle)这种说法。这些是依赖注入能解决的更复杂的问题。 控制反转 顾名思义,一个系统通过组织控制和对象的完全分离来实现”控制反转”。对于依赖注入,这就意味着通过在系统的其他地方控制和实例化依赖对象,从而实现了解耦。 一些

  • 我需要以下递归关系的帮助。 T(1)=1 T(n)=T(n-1)*n 这就是我尝试过的。我想我可能把替换部分搞砸了,但请再看一次,让我知道我得到的时间复杂度是否正确。 现在我不确定我所做的是否完全正确,但如果有任何帮助,我将不胜感激。

  • 我是一个初学者在Laravel,我已经安装Laravel Excel包在我的项目成功.但是,有一个问题出现的包,当我运行它显示这个错误: 加载具有包信息的composer存储库更新依赖项在锁文件中无需修改从锁文件安装依赖项(包括需要开发)包操作:2次安装,0次更新,0次删除 安装Markbaker/复杂(2.0.0):提取存档 安装ezyoung/html净化器(v4.13.0):提取存档生成优化

  • Redis zrank。 返回存储在key处的排序集中成员的排名,分数从低到高排序。排名(或指数)是基于0的,这意味着得分最低的成员排名为0。 为什么复杂度是O(log(N))?成员按分数排序,但zank按成员查询。 我找到了一些可能是答案的东西。 A.zset由ziplist实现时 大小小于128 每个成员的大小小于64字节 所以,ziplist的大小很小,所以这不是我讨论的问题。 B.当zse

  • 问题内容: 我在Postgres DB中有一个这样的表: 该表包含因缺勤原因(类型)不同而导致雇员缺勤的每一天的非连续日条目。但是,缺勤期可能跨越这几天,并且在以前没有相同类型的5天之内的任何缺勤条目仍被视为相同缺勤“期间”的一部分。 我需要获取每个员工缺勤期间的输出,这些期间的开始和结束日期加上该跨多个日期的期间内的总天数。 由于本报告目的将不同类型的缺勤视为相同,这一事实使情况更加复杂。因此,

  • 我试图为这段代码找出一个大O的紧密界限: 如果我们从内最循环开始,它将在最坏的情况下运行k=n^2次,占O(N^2)。如果语句每次j=m*i时都为真,其中m是一个任意常数。由于j从1运行到i^2,这将在m={1,2,...,i}时发生,这意味着它将在i次时为真,i最多可以是n,所以最坏的情况将是m={1,2,...,n}=n次。如果i=n,第二个循环应该有O(N^2)的最坏情况。外环具有O(N)的