跳到主要内容

Apache Drill ORDER BY 子句

在 Apache Drill 中,ORDER BY 子句用于对查询结果进行排序。通过指定一个或多个列,您可以按升序或降序排列数据。这对于需要按特定顺序查看数据的场景非常有用,例如按日期、数值或字母顺序排序。

基本语法

ORDER BY 子句的基本语法如下:

sql
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
  • column1, column2, ...:您希望排序的列。
  • ASC:升序排序(默认)。
  • DESC:降序排序。

示例

假设我们有一个名为 sales 的表,包含以下数据:

idproductquantitypricesale_date
1Apple101.002023-01-01
2Banana50.502023-01-02
3Orange80.752023-01-03
4Apple151.002023-01-04
5Banana200.502023-01-05

按单列排序

以下查询按 sale_date 列升序排序:

sql
SELECT id, product, quantity, price, sale_date
FROM sales
ORDER BY sale_date ASC;

输出结果:

idproductquantitypricesale_date
1Apple101.002023-01-01
2Banana50.502023-01-02
3Orange80.752023-01-03
4Apple151.002023-01-04
5Banana200.502023-01-05

按多列排序

以下查询先按 product 列升序排序,再按 quantity 列降序排序:

sql
SELECT id, product, quantity, price, sale_date
FROM sales
ORDER BY product ASC, quantity DESC;

输出结果:

idproductquantitypricesale_date
4Apple151.002023-01-04
1Apple101.002023-01-01
5Banana200.502023-01-05
2Banana50.502023-01-02
3Orange80.752023-01-03

实际应用场景

场景 1:按日期排序

假设您需要查看最近的销售记录,可以按 sale_date 列降序排序:

sql
SELECT id, product, quantity, price, sale_date
FROM sales
ORDER BY sale_date DESC;

输出结果:

idproductquantitypricesale_date
5Banana200.502023-01-05
4Apple151.002023-01-04
3Orange80.752023-01-03
2Banana50.502023-01-02
1Apple101.002023-01-01

场景 2:按产品名称和数量排序

如果您需要按产品名称排序,并且在同一产品中按数量从高到低排序,可以使用以下查询:

sql
SELECT id, product, quantity, price, sale_date
FROM sales
ORDER BY product ASC, quantity DESC;

输出结果:

idproductquantitypricesale_date
4Apple151.002023-01-04
1Apple101.002023-01-01
5Banana200.502023-01-05
2Banana50.502023-01-02
3Orange80.752023-01-03

总结

ORDER BY 子句是 Apache Drill 中用于对查询结果进行排序的强大工具。通过指定一个或多个列,您可以按升序或降序排列数据。本文通过示例和实际应用场景展示了如何使用 ORDER BY 子句,帮助您更好地理解和应用这一概念。

附加资源

练习

  1. 编写一个查询,按 price 列升序排序,并显示前 3 条记录。
  2. 编写一个查询,按 product 列升序排序,再按 price 列降序排序。
提示

在编写查询时,确保列名和表名正确无误,以避免语法错误。