📜  groupby sort sql hive - SQL (1)

📅  最后修改于: 2023-12-03 15:01:04.986000             🧑  作者: Mango

主题:GroupBy 和 Sort 的 SQL 在 Hive 中的使用

简介

在 Hive 中,GroupBy 和 Sort 是进行数据聚合和排序的常用操作。 GroupBy 可以按照一个或多个列进行分组,然后对每个组执行聚合操作。 Sort 可以按照一个或多个列对数据进行排序。

GroupBy

GroupBy 语句用于按照一个或多个列对数据进行分组,然后对每个组执行聚合操作。 在 Hive 中,GroupBy 可以使用以下语法:

SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
WHERE condition
GROUP BY column1, column2, ...;

其中,column1, column2, ... 表示要进行分组的列,aggregate_function 表示聚合函数,例如 SUM, COUNT, AVG 等,table_name 表示要查询的表名,condition 表示可选的查询条件。

下面是一个 GroupBy 的示例:

SELECT department, AVG(salary)
FROM employees
GROUP BY department;

这个语句将按照 department 列对 employees 表进行分组,并计算每个组的平均工资。

Sort

Sort 语句用于对数据进行排序。 在 Hive 中,Sort 可以使用以下语法:

SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;

其中,column1, column2, ... 表示要排序的列,table_name 表示要查询的表名,condition 表示可选的查询条件,[ASC|DESC] 表示排序顺序,可以是 ASC(升序)或 DESC(降序)。

下面是一个 Sort 的示例:

SELECT name, age, salary
FROM employees
ORDER BY salary DESC;

这个语句将按照 salary 列对 employees 表进行降序排序,并返回每行的 name, age, salary 三列。

GroupBy 和 Sort 结合使用

GroupBy 和 Sort 可以结合使用,以实现按照指定列进行分组,并按照指定列对每个组进行排序的功能。 在 Hive 中,可以使用以下语法:

SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
WHERE condition
GROUP BY column1, column2, ...
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;

其中,column1, column2, ... 表示要进行分组和排序的列,aggregate_function 表示聚合函数,例如 SUM, COUNT, AVG 等,table_name 表示要查询的表名,condition 表示可选的查询条件,[ASC|DESC] 表示排序顺序。

下面是一个 GroupBy 和 Sort 结合使用的示例:

SELECT department, AVG(salary)
FROM employees
GROUP BY department
ORDER BY AVG(salary) DESC;

这个语句将按照 department 列对 employees 表进行分组,并计算每个组的平均工资,然后按照平均工资的降序进行排序。