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
的表,包含以下数据:
id | product | quantity | price | sale_date |
---|---|---|---|---|
1 | Apple | 10 | 1.00 | 2023-01-01 |
2 | Banana | 5 | 0.50 | 2023-01-02 |
3 | Orange | 8 | 0.75 | 2023-01-03 |
4 | Apple | 15 | 1.00 | 2023-01-04 |
5 | Banana | 20 | 0.50 | 2023-01-05 |
按单列排序
以下查询按 sale_date
列升序排序:
sql
SELECT id, product, quantity, price, sale_date
FROM sales
ORDER BY sale_date ASC;
输出结果:
id | product | quantity | price | sale_date |
---|---|---|---|---|
1 | Apple | 10 | 1.00 | 2023-01-01 |
2 | Banana | 5 | 0.50 | 2023-01-02 |
3 | Orange | 8 | 0.75 | 2023-01-03 |
4 | Apple | 15 | 1.00 | 2023-01-04 |
5 | Banana | 20 | 0.50 | 2023-01-05 |
按多列排序
以下查询先按 product
列升序排序,再按 quantity
列降序排序:
sql
SELECT id, product, quantity, price, sale_date
FROM sales
ORDER BY product ASC, quantity DESC;
输出结果:
id | product | quantity | price | sale_date |
---|---|---|---|---|
4 | Apple | 15 | 1.00 | 2023-01-04 |
1 | Apple | 10 | 1.00 | 2023-01-01 |
5 | Banana | 20 | 0.50 | 2023-01-05 |
2 | Banana | 5 | 0.50 | 2023-01-02 |
3 | Orange | 8 | 0.75 | 2023-01-03 |
实际应用场景
场景 1:按日期排序
假设您需要查看最近的销售记录,可以按 sale_date
列降序排序:
sql
SELECT id, product, quantity, price, sale_date
FROM sales
ORDER BY sale_date DESC;
输出结果:
id | product | quantity | price | sale_date |
---|---|---|---|---|
5 | Banana | 20 | 0.50 | 2023-01-05 |
4 | Apple | 15 | 1.00 | 2023-01-04 |
3 | Orange | 8 | 0.75 | 2023-01-03 |
2 | Banana | 5 | 0.50 | 2023-01-02 |
1 | Apple | 10 | 1.00 | 2023-01-01 |
场景 2:按产品名称和数量排序
如果您需要按产品名称排序,并且在同一产品中按数量从高到低排序,可以使用以下查询:
sql
SELECT id, product, quantity, price, sale_date
FROM sales
ORDER BY product ASC, quantity DESC;
输出结果:
id | product | quantity | price | sale_date |
---|---|---|---|---|
4 | Apple | 15 | 1.00 | 2023-01-04 |
1 | Apple | 10 | 1.00 | 2023-01-01 |
5 | Banana | 20 | 0.50 | 2023-01-05 |
2 | Banana | 5 | 0.50 | 2023-01-02 |
3 | Orange | 8 | 0.75 | 2023-01-03 |
总结
ORDER BY
子句是 Apache Drill 中用于对查询结果进行排序的强大工具。通过指定一个或多个列,您可以按升序或降序排列数据。本文通过示例和实际应用场景展示了如何使用 ORDER BY
子句,帮助您更好地理解和应用这一概念。
附加资源
练习
- 编写一个查询,按
price
列升序排序,并显示前 3 条记录。 - 编写一个查询,按
product
列升序排序,再按price
列降序排序。
提示
在编写查询时,确保列名和表名正确无误,以避免语法错误。