如何在KDB/Q中同时进行升序和降序排序

如何在KDB/Q中同时进行升序和降序排序,kdb,q-lang,Kdb,Q Lang,在SQL中,可以这样做 SELECT from tbl ORDER BY col1, col2 DESC 在KDB中,可以这样做 `col1 xasc select from tbl 或 但是,在KDB/Q中,一个按col1升序然后按col2降序的排序是如何进行的呢?`col1`col2 xasc从tbl中选择应该可以实现这一点 创建示例数据: q)show tbl:([]a:10?10;b:10?10;c:10?10) a b c ----- 8 4 8 1 9 1 7 2 9 2 7

在SQL中,可以这样做

SELECT from tbl  ORDER BY col1, col2 DESC
在KDB中,可以这样做

`col1 xasc select from tbl


但是,在KDB/Q中,一个按col1升序然后按col2降序的排序是如何进行的呢?

`col1`col2 xasc从tbl中选择
应该可以实现这一点

创建示例数据:

q)show tbl:([]a:10?10;b:10?10;c:10?10)
a b c
-----
8 4 8
1 9 1
7 2 9
2 7 5
4 0 4
5 1 6
4 9 6
2 2 1
7 1 8
8 8 5
进行排序:

q)`a xasc `b xdesc tbl
a b c
-----
1 9 1
2 7 5
2 2 1
4 9 6
4 0 4
5 1 6
7 2 9
7 1 8
8 8 5
8 4 8

按两列升序排序。不是一个上升,一个下降。我认为这更清楚:我认为这更清楚,但这似乎有效<代码>tbl2:([]a:(til 10)mod 3;b:til 10;row:til 10)a xasc`b xdesc tbl2存储-这会在a中创建更大的集合大小,因此效果更明显。别忘了a.我认为你是不对的。使用@gbronner的tbl2:
q)(`a xasc tbl2)~(`a xasc`b xdesc tbl2)0b
q)`a xasc `b xdesc tbl
a b c
-----
1 9 1
2 7 5
2 2 1
4 9 6
4 0 4
5 1 6
7 2 9
7 1 8
8 8 5
8 4 8