What is q’s equivalent to sql’s ORDER BY?
xasc
and xdesc
. Consider the following table:
q)table: ([] x: 10 ? "abc"; y: 10 ? til 10)
q)table
x y
---
a 7
a 7
b 1
b 9
a 1
a 0
c 8
b 8
c 3
c 1
q)
To sort by column x, instead of ORDER BY
, we write `x xasc table
:
q)`x xasc table // sort by column x
x y
---
a 7
a 7
a 1
a 0
b 1
b 9
b 8
c 8
c 3
c 1
q)
The application of xdesc
is similar.
In addition, to sort by multiple columns, instead of ORDER BY y, x
or ORDER BY y, x DESC
, we pass the list of column names as the left argument to xasc
or xdesc
, respectively. For example,
q)`y`x xdesc select from table where y > 5
x y
---
b 9
c 8
b 8
a 7
a 7
q)
Don’t confuse xasc
and xdesc
with asc
and desc
, which operate on a vector instead of a table. Read more about sorting vectors in this related faq.