大數據技術之Hive 第6章 查詢 基本查詢

来源:https://www.cnblogs.com/niuniu2022/archive/2022/06/08/16354067.html
-Advertisement-
Play Games

一、ThreadLocal原理分析 1、概念 ThreadLocal類並不是用來解決多線程環境下的共用變數問題,而是用來提供線程內部的共用變數。在多線程環境 下,可以保證各個線程之間的變數互相隔離、相互獨立。 2、核心原理 即:實際上是ThreadLocal的靜態內部類ThreadLocalMap為 ...


第6章 查詢

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select

查詢語句語法:

SELECT [ALL | DISTINCT] select_expr, select_expr, ...
 FROM table_reference
 [WHERE where_condition]
 [GROUP BY col_list]
 [ORDER BY col_list]
 [CLUSTER BY col_list
  | [DISTRIBUTE BY col_list] [SORT BY col_list]
 ]
 [LIMIT number]

6.1 基本查詢(Select…From)

6.1.1 全表和特定列查詢

0)數據準備

(0)原始數據

dept:

10	ACCOUNTING	1700
20	RESEARCH	1800
30	SALES	1900
40	OPERATIONS	1700

emp:

7369	SMITH	CLERK	7902	1980-12-17	800.00		20
7499	ALLEN	SALESMAN	7698	1981-2-20	1600.00	300.00	30
7521	WARD	SALESMAN	7698	1981-2-22	1250.00	500.00	30
7566	JONES	MANAGER	7839	1981-4-2	2975.00		20
7654	MARTIN	SALESMAN	7698	1981-9-28	1250.00	1400.00	30
7698	BLAKE	MANAGER	7839	1981-5-1	2850.00		30
7782	CLARK	MANAGER	7839	1981-6-9	2450.00		10
7788	SCOTT	ANALYST	7566	1987-4-19	3000.00		20
7839	KING	PRESIDENT		1981-11-17	5000.00		10
7844	TURNER	SALESMAN	7698	1981-9-8	1500.00	0.00	30
7876	ADAMS	CLERK	7788	1987-5-23	1100.00		20
7900	JAMES	CLERK	7698	1981-12-3	950.00		30
7902	FORD	ANALYST	7566	1981-12-3	3000.00		20
7934	MILLER	CLERK	7782	1982-1-23	1300.00		10

(1)創建部門表

create table if not exists dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by '\t';

(2)創建員工表

create table if not exists emp(

empno int,

ename string,

job string,

mgr int,

hiredate string, 

sal double, 

comm double,

deptno int)

row format delimited fields terminated by '\t';

(3)導入數據

load data local inpath '/opt/module/hive/datas/dept.txt' into table dept;
load data local inpath '/opt/module/hive/datas/emp.txt' into table emp;

1)全表查詢

hive (default)> select * from emp;
hive (default)> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp ;

2)選擇特定列查詢

hive (default)> select empno, ename from emp;

註意:

(1)SQL 語言大小寫不敏感。

(2)SQL 可以寫在一行或者多行

(3)關鍵字不能被縮寫也不能分行

(4)各子句一般要分行寫。

(5)使用縮進提高語句的可讀性。

6.1.2 列別名

1)重命名一個列

2)便於計算

3)緊跟列名,也可以在列名和別名之間加入關鍵字‘AS’

4)案例實操

查詢名稱和部門

hive (default)> select ename AS name, deptno dn from emp;

6.1.3 算術運算符

運算符 描述
A+B A和B 相加
A-B A減去B
A*B A和B 相乘
A/B A除以B
A%B A對B取餘
A&B A和B按位取與
A|B A和B按位取或
A^B A和B按位取異或
~A A按位取反

案例實操:查詢出所有員工的薪水後加1顯示。

hive (default)> select sal +1 from emp;

6.1.4 常用函數

1)求總行數(count)

hive (default)> select count(*) cnt from emp;

2)求工資的最大值(max)

hive (default)> select max(sal) max_sal from emp;

3)求工資的最小值(min)

hive (default)> select min(sal) min_sal from emp;

4)求工資的總和(sum)

hive (default)> select sum(sal) sum_sal from emp; 

5)求工資的平均值(avg)

hive (default)> select avg(sal) avg_sal from emp;

6.1.5 Limit語句

典型的查詢會返回多行數據。LIMIT子句用於限制返回的行數。

hive (default)> select * from emp limit 5;
hive (default)> select * from emp limit 2,3;

6.1.6 Where語句

1)使用WHERE子句,將不滿足條件的行過濾掉

2)WHERE子句緊隨FROM子句

3)案例實操

查詢出薪水大於1000的所有員工

hive (default)> select * from emp where sal >1000;

註意:where子句中不能使用欄位別名。

6.1.7 比較運算符(Between/In/ Is Null)

1)下麵表中描述了謂詞操作符,這些操作符同樣可以用於JOIN…ON和HAVING語句中。\

操作符 支持的數據類型 描述
A=B 基本數據類型 如果A等於B則返回TRUE,反之返回FALSE
A<=>B 基本數據類型 如果A和B都為NULL,則返回TRUE,如果一邊為NULL,返回False
A<>B, A!=B 基本數據類型 A或者B為NULL則返回NULL;如果A不等於B,則返回TRUE,反之返回FALSE
A<B 基本數據類型 A或者B為NULL,則返回NULL;如果A小於B,則返回TRUE,反之返回FALSE
A<=B 基本數據類型 A或者B為NULL,則返回NULL;如果A小於等於B,則返回TRUE,反之返回FALSE
A>B 基本數據類型 A或者B為NULL,則返回NULL;如果A大於B,則返回TRUE,反之返回FALSE
A>=B 基本數據類型 A或者B為NULL,則返回NULL;如果A大於等於B,則返回TRUE,反之返回FALSE
A [NOT] BETWEEN B AND C 基本數據類型 如果A,B或者C任一為NULL,則結果為NULL。如果A的值大於等於B而且小於或等於C,則結果為TRUE,反之為FALSE。如果使用NOT關鍵字則可達到相反的效果。
A IS NULL 所有數據類型 如果A等於NULL,則返回TRUE,反之返回FALSE
A IS NOT NULL 所有數據類型 如果A不等於NULL,則返回TRUE,反之返回FALSE
IN(數值1, 數值2) 所有數據類型 使用 IN運算顯示列表中的值
A [NOT] LIKE B STRING 類型 B是一個SQL下的簡單正則表達式,也叫通配符模式,如果A與其匹配的話,則返回TRUE;反之返回FALSE。B的表達式說明如下:‘x%’表示A必須以字母‘x’開頭,‘%x’表示A必須以字母’x’結尾,而‘%x%’表示A包含有字母’x’,可以位於開頭,結尾或者字元串中間。如果使用NOT關鍵字則可達到相反的效果。
A RLIKE B, A REGEXP B STRING 類型 B是基於java的正則表達式,如果A與其匹配,則返回TRUE;反之返回FALSE。匹配使用的是JDK中的正則表達式介面實現的,因為正則也依據其中的規則。例如,正則表達式必須和整個字元串A相匹配,而不是只需與其字元串匹配。

2)案例實操

(1)查詢出薪水等於5000的所有員工

hive (default)> select * from emp where sal =5000;

(2)查詢工資在500到1000的員工信息

hive (default)> select * from emp where sal between 500 and 1000;

(3)查詢comm為空的所有員工信息

hive (default)> select * from emp where comm is null;

(4)查詢工資是1500或5000的員工信息

hive (default)> select * from emp where sal IN (1500, 5000);

6.1.8 Like和RLike

1)使用LIKE運算選擇類似的值

2)選擇條件可以包含字元或數字:

  • % 代表零個或多個字元(任意個字元)。
  • _ 代表一個字元。

3)RLIKE子句

RLIKE子句是Hive中這個功能的一個擴展,其可以通過Java的正則表達式這個更強大的語言來指定匹配條件。

4)案例實操

(1)查找名字以A開頭的員工信息

hive (default)> select * from emp where ename LIKE 'A%';

(2)查找名字中第二個字母為A的員工信息

hive (default)> select * from emp where ename LIKE '_A%';

(3)查找名字中帶有A的員工信息

hive (default)> select * from emp where ename  RLIKE '[A]';

6.1.9 邏輯運算符(And/Or/Not)

操作符 含義
AND 邏輯並
OR 邏輯或
NOT 邏輯否

1)案例實操

(1)查詢薪水大於1000,部門是30

hive (default)> select * from emp where sal>1000 and deptno=30;

(2)查詢薪水大於1000,或者部門是30

hive (default)> select * from emp where sal>1000 or deptno=30;

(3)查詢除了20部門和30部門以外的員工信息

hive (default)> select * from emp where deptno not IN(30, 20);

6.2 分組

6.2.1 Group By語句

GROUP BY語句通常會和聚合函數一起使用,按照一個或者多個列隊結果進行分組,然後對每個組執行聚合操作。

1)案例實操:

(1)計算emp表每個部門的平均工資

hive (default)> select t.deptno, avg(t.sal) avg_sal from emp t group by t.deptno;

(2)計算emp每個部門中每個崗位的最高薪水

hive (default)> select t.deptno, t.job, max(t.sal) max_sal from emp t group by
 t.deptno, t.job;

6.2.2 Having語句

1)having與where不同點\

(1)where後面不能寫分組函數,而having後面可以使用分組函數。

(2)having只用於group by分組統計語句。

2)案例實操\

(1)求每個部門的平均薪水大於2000的部門

求每個部門的平均工資

hive (default)> select deptno, avg(sal) from emp group by deptno;

求每個部門的平均薪水大於2000的部門

hive (default)> select deptno, avg(sal) avg_sal from emp group by deptno having
 avg_sal > 2000;

IT學習網站

牛牛IT網站

大數據高薪訓練營 完結

搜狗截圖20220608012235

鏈接:https://pan.baidu.com/s/1ssRD-BYOiiMw30EV_BLMWQ
提取碼:dghu
失效加V:x923713

QQ交流群 歡迎加入

WechatIMG135
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 一、鏡像 鏡像是一種輕量級、可執行的獨立軟體包,它包含運行某個軟體所需的所有內容,我們把應用程式和配置依賴打包形成一個可交付的運行環境(包括代碼、運行時需要的庫、環境變數和配置文件等),這個打包好的運行環境就是image鏡像文件 1.鏡像分層 以 ...
  • 一、基本說明 • Oracle 中的函數可以返回表類型,但是這個表類型實際上是集合類型(與數組類似)。從 Oracle 9i 開始,提供了一個叫做"管道化表函數"來解決此問題。 • 管道化表函數,必須返回一個集合類型,且標明 pipelined。它不能返回具體變數,必須以一個空 return 返回, ...
  • 1、Spark Catalyst擴展點 Spark catalyst的擴展點在SPARK-18127中被引入,Spark用戶可以在SQL處理的各個階段擴展自定義實現,非常強大高效,是SparkSQL的核心組件(查詢優化器),它負責將SQL語句轉換成物理執行計劃,Catalyst的優劣決定了SQL執行 ...
  • 隨著電子產品的普遍應用,AR技術也開始廣泛普及,在游戲、電商、家裝等領域都有涉及。比如,在室內設計時,我們可以通過AR技術在實際場景中進行虛擬軟裝的搭配,運用華為AR Engine運動跟蹤能力在實際應用中實時輸出室內環境的三維坐標信息,確定現實室內環境和虛擬軟裝之間的變換關係,從而穩定精準的實現軟裝 ...
  • 近年來,以機器學習為代表的人工智慧技術(以下簡稱AI技術)蓬勃發展。新演算法層出不窮,開發出的圖像識別、自然語言、活體檢測等能力令智能化的未來生活不再遙不可及。同時,這些AI技術正持續演化和發展,數據和算力的限制也在被不斷突破。依托層出不窮的新技術和新產品,交通出行、購物快遞、金融理財等各類與用戶生活 ...
  • Vue Echare 圖表 的基本使用 Apache ECharts 一個基於 JavaScript 的開源可視化圖表庫 npm install echarts vue-echartsnpm i -D @vue/composition-api 在main.js 當中(全局引用) import ech ...
  • 今天,分享一個實際業務中能夠用得上的動畫技巧。 巧用逐幀動畫,配合補間動畫實現一個無限迴圈的輪播效果,像是這樣: 看到上述示意圖,有同學不禁會發問,這不是個非常簡單的位移動畫麽? 我們來簡單分析分析,從錶面上看,確實好像只有元素的 transform: translate() 在位移,但是註意,這裡 ...
  • 前端周刊:2022-10 期 前端開發 現在 vue3+vite2 成熟了嗎,可以用在生產環境嗎? Vue3 確實還是有問題 百度統計支持單頁應用啦 單頁應用設置 首個徹底解決緩存和資料庫一致性問題的方案 業務開發中能遇到的問題多數都是工程問題而不是技術問題,前後端都適用 微信公眾號/小程式獲取當前 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...