一、 group by的概念
group by是SQL中非常重要的一個查詢方式,它可以將表中的數據根據指定的列進行分組,然後對每個組進行聚合操作,例如count、sum、avg、max、min等聚合操作,最後返回每個分組的結果。它可以幫助我們方便地對數據進行分類、匯總、篩選等操作,從而更好地了解數據的分佈、趨勢等信息。
二、 Hive語法中的group by
Hive是一個基於Hadoop的數據倉庫工具,它支持類SQL語言,允許我們使用SQL語句查詢Hadoop上存儲的大數據,其中也包含了group by的操作。
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
三、 Hive group by操作的實戰應用
1、 示例數據
為了更好地說明group by的使用,我們先導入一個簡單的示例數據,包含學生信息和成績信息。
CREATE TABLE student_scores ( id INT, name STRING, age INT, gender STRING, subject STRING, score INT ); INSERT INTO student_scores VALUES (1,'Tom',18,'male','math',90); INSERT INTO student_scores VALUES (2,'Jack',17,'male','math',80); INSERT INTO student_scores VALUES (3,'Lucy',18,'female','math',95); INSERT INTO student_scores VALUES (4,'Lily',17,'female','math',85); INSERT INTO student_scores VALUES (5,'Tom',18,'male','english',70); INSERT INTO student_scores VALUES (6,'Jack',17,'male','english',82); INSERT INTO student_scores VALUES (7,'Lucy',18,'female','english',90); INSERT INTO student_scores VALUES (8,'Lily',17,'female','english',88);
2、 基本的group by查詢操作
我們首先來看一個基本的group by查詢,它可以根據學生姓名分組,計算每個學生的平均成績。
SELECT name, AVG(score) as avg_score FROM student_scores GROUP BY name;
執行這個查詢後,得到的結果如下:
name avg_score ------------------ Jack 81.0 Lily 86.5 Lucy 92.5 Tom 80.0
3、 group by的多列查詢
如果我們需要同時按照多個列進行分組,只需要在group by後面加上多個列名即可。
SELECT subject, name, AVG(score) as avg_score FROM student_scores GROUP BY subject, name;
執行這個查詢後,得到的結果如下:
subject name avg_score ------------------------ english Jack 82.0 english Lily 88.0 english Lucy 90.0 english Tom 70.0 math Jack 80.0 math Lily 85.0 math Lucy 95.0 math Tom 90.0
4、 group by的過濾操作
我們還可以在group by操作之前加上where語句進行過濾,例如只查詢數學相關的信息。
SELECT name, AVG(score) as avg_score FROM student_scores WHERE subject='math' GROUP BY name;
執行這個查詢後,得到的結果如下:
name avg_score ------------------ Jack 80.0 Lily 85.0 Lucy 95.0 Tom 90.0
5、 group by的聚合操作
除了平均值之外,還可以使用其他的聚合操作,例如sum、count、min、max等。
SELECT name, COUNT(*) as count, MIN(score) as min_score, MAX(score) as max_score FROM student_scores GROUP BY name;
執行這個查詢後,得到的結果如下:
name count min_score max_score -------------------------------------- Jack 2 80 82 Lily 2 85 88 Lucy 2 90 95 Tom 2 70 90
結論
Hive group by操作是數據分析和統計的基礎之一,在實際的數據處理中非常常見。我們可以利用它對數據進行分類、匯總、篩選等操作,從而更好地了解數據的特點和趨勢,為後續的數據分析和挖掘提供基礎。
原創文章,作者:JEKGY,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/330511.html