每组的KDB顶行

每组的KDB顶行,kdb,Kdb,我想从部门表SQL中查询前5名工资收入者 SELECT * FROM ( SELECT empno, salary, RANK () OVER (PARTITION BY deptno ORDER BY salary DESC) emprank FROM emp ) WHERE emprank <= 3; 但无法产生预期的结果。请给我一个提示。t在哪里: t:([]deptno:where 10 20 8;salary:40000

我想从部门表SQL中查询前5名工资收入者

    SELECT * FROM (
                    SELECT empno, salary, RANK () OVER (PARTITION BY deptno ORDER BY salary DESC) emprank FROM emp ) 
    WHERE emprank <= 3;
但无法产生预期的结果。请给我一个提示。

t在哪里:

t:([]deptno:where 10 20 8;salary:40000+38?30000;emp:neg[38]?`3)
您可以按部门返回收入最高的前三名,并提供以下信息

q)select from t where 3>(iasc idesc@;salary)fby deptno
deptno salary emp
-----------------
0      69894  mfm
0      55539  bbb
0      62673  jnd
1      66668  afk
1      67474  kcj
1      69979  kon
2      60561  oco
2      57664  khd
2      58743  dga
请注意,我使用表t纯粹作为示例表。如果您使用的桌子与我这里的桌子有显著差异,请告诉我

其中t是:

t:([]deptno:where 10 20 8;salary:40000+38?30000;emp:neg[38]?`3)
您可以按部门返回收入最高的前三名,并提供以下信息

q)select from t where 3>(iasc idesc@;salary)fby deptno
deptno salary emp
-----------------
0      69894  mfm
0      55539  bbb
0      62673  jnd
1      66668  afk
1      67474  kcj
1      69979  kon
2      60561  oco
2      57664  khd
2      58743  dga

请注意,我使用表t纯粹作为示例表。如果您使用的桌子与我这里的桌子有显著差异,请告诉我

其他执行速度更快、占用内存更少的替代方案:

q) select from t where ({til[count x] in 3#idesc x};salary) fby deptno
如果你想让所有的员工都在前三名工资范围内,你可以使用下面的解决方案

q) select from t where ({x in x 3#idesc x};salary) fby deptno
如果deptno未对表进行排序,则可以使用“xasc/xdesc”对结果进行排序:

q) `deptno xasc select from t where ({til[count x] in 3#idesc x};salary) fby deptno

其他执行速度更快、占用内存更少的替代方案:

q) select from t where ({til[count x] in 3#idesc x};salary) fby deptno
如果你想让所有的员工都在前三名工资范围内,你可以使用下面的解决方案

q) select from t where ({x in x 3#idesc x};salary) fby deptno
如果deptno未对表进行排序,则可以使用“xasc/xdesc”对结果进行排序:

q) `deptno xasc select from t where ({til[count x] in 3#idesc x};salary) fby deptno

另一种选择是:

select 3 sublist salary idesc[salary] by deptno from emp

如果一个部门的工资少于3份,则使用子列表而不是处理该案例。

另一个选项是:

select 3 sublist salary idesc[salary] by deptno from emp

如果某个部门的工资少于3份,则使用子列表而不是处理该情况。

如果存在关系,您希望如何处理边缘条件?如果存在关系,您希望如何处理边缘条件?