成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL-Hive中的Where語句解析

數據庫 MySQL
用AND連接兩個及以上的謂詞操作符代表且的意思,即必須所有條件同時滿足;用OR連接兩個及以上的謂詞操作符代表或的意思,即至少有一個條件滿足即可。

[[402095]]

本文轉載自微信公眾號「巡山貓說數據」,作者巡山貓說數據。轉載本文請聯系巡山貓說數據公眾號。

你好,我是巡山貓!

今天我們來講講Hive中最常用的 where 語句知識要點。

01-基礎語法

命令如下:

  1. SELECT 列名 
  2. FROM 表名 
  3. WHERE 列名 運算符 值 [AND 列名 運算符 值] [OR 列名 運算符 值]; 

備注:WHERE后的列名必須用真實列名,不能使用自定義的別名,否則會報錯。

02-謂詞操作符詳解

下面表中描述了謂詞操作符,這些操作符同樣可以用于JOIN…ON和HAVING語句中,后續我們會逐一介紹這兩個語句

備注:NULL在Hive中代表空值的意思。

03-AND & OR

用AND連接兩個及以上的謂詞操作符代表且的意思,即必須所有條件同時滿足;用OR連接兩個及以上的謂詞操作符代表或的意思,即至少有一個條件滿足即可。

下面舉幾個例子:

1、取出表t_od_use_cnt中滿足以下條件的5條記錄:

·日期為20190101到20190102之間;

·平臺取ios平臺(1為andriod,2為ios);

·當日使用次數大于等于30。

語句如下:

  1. SELECT * 
  2. FROM app.t_od_use_cnt 
  3. WHERE date_8 BETWEEN 20190101 AND 20190102 
  4.       AND platform = '2' 
  5.       AND use_cnt >= 30 limit 5; 

備注:數值型的值可以直接寫,但字符格式及string格式的值必須加引號

運行結果如下:

  1. hive (app)> SELECT * 
  2.           > FROM app.t_od_use_cnt 
  3.           > WHERE date_8 BETWEEN 20190101 AND 20190102 
  4.           >       AND platform = '2' 
  5.           >       AND use_cnt >= 30 limit 5; 
  6. OK 
  7. t_od_use_cnt.platform  t_od_use_cnt.app_version  t_od_use_cnt.user_id  t_od_use_cnt.use_cnt  t_od_use_cnt.is_active  t_od_use_cnt.date_8 
  8. 2  1.3  10001  49  1  20190101 
  9. 2  1.1  10016  37  1  20190101 
  10. 2  1.4  10025  44  1  20190101 
  11. 2  1.1  10034  49  1  20190101 
  12. 2  1.2  10039  37  1  20190101 
  13. Time taken: 0.28 seconds, Fetched: 5 row(s) 

2、取出表t_od_use_cnt中滿足以下條件的5條記錄:

·日期大于20190102;

·1,3和1.4版本且當日使用次數大于等于30 或 1,1和1.2版本且當日使用次數大于等于20。

語句如下:

  1. SELECT * 
  2. FROM app.t_od_use_cnt 
  3. WHERE date_8 > 20190102 
  4.       AND ( 
  5.             ( 
  6.                   app_version IN ('1.3''1.4'
  7.                   AND use_cnt >= 30 
  8.                   ) 
  9.             OR ( 
  10.                   app_version IN ('1.1''1.2'
  11.                   AND use_cnt >= 20 
  12.                   ) 
  13.             ) limit 5; 

備注:當and、or同時出現時,要使用()將條件區分開,Hive會優先執行括號內的條件語句。這樣一來避免邏輯錯誤,二來使邏輯更清晰。

運行結果如下:

  1. hive (app)> SELECT * 
  2.           > FROM app.t_od_use_cnt 
  3.           > WHERE date_8 > 20190102 
  4.           >       AND ( 
  5.           >             ( 
  6.           >                   app_version IN ('1.3''1.4'
  7.           >                   AND use_cnt >= 30 
  8.           >                   ) 
  9.           >             OR ( 
  10.           >                   app_version IN ('1.1''1.2'
  11.           >                   AND use_cnt >= 20 
  12.           >                   ) 
  13.           >             ) limit 5; 
  14. OK 
  15. t_od_use_cnt.platform  t_od_use_cnt.app_version  t_od_use_cnt.user_id  t_od_use_cnt.use_cnt  t_od_use_cnt.is_active  t_od_use_cnt.date_8 
  16. 2  1.2  10400  40  1  20190103 
  17. 1  1.2  10402  32  1  20190103 
  18. 1  1.2  10403  41  1  20190103 
  19. 2  1.4  10405  50  1  20190103 
  20. 2  1.1  10406  24  1  20190103 
  21. Time taken: 0.298 seconds, Fetched: 5 row(s) 

04-Like & Rlike & Regexp

這三種語句的含義和用法上面已經有所介紹,rlike、regexp功能和like功能一致,只是like是后面只支持簡單表達式匹配(_%),而rlike、regexp則支持標準正則表達式語法。所以如果正則表達式使用熟練的話,建議使用rlike,功能更加強大。所有的like匹配都可以被替換成rlike。反之,則不行。注意事項:like是從頭逐一字符匹配的,但是rlike則不是。這里我們舉幾個例子。

1、取出表t_od_use_cnt中滿足以下條件的5條記錄:

·日期大于20190102;

·user_id以5結尾

語句如下:

  1. SELECT * 
  2. FROM app.t_od_use_cnt 
  3. WHERE date_8 > 20190102 
  4.       AND user_id LIKE '%5' limit 5; 

運行結果如下:

  1. hive (app)> SELECT * 
  2.           > FROM app.t_od_use_cnt 
  3.           > WHERE date_8 > 20190102 
  4.           >       AND user_id LIKE '%5' limit 5; 
  5. OK 
  6. t_od_use_cnt.platform  t_od_use_cnt.app_version  t_od_use_cnt.user_id  t_od_use_cnt.use_cnt  t_od_use_cnt.is_active  t_od_use_cnt.date_8 
  7. 2  1.4  10405  50  1  20190103 
  8. 1  1.1  10415  30  1  20190103 
  9. 2  1.3  10425  15  1  20190103 
  10. 1  1.3  10435  3  0  20190103 
  11. 1  1.4  10445  43  1  20190103 
  12. Time taken: 0.977 seconds, Fetched: 5 row(s) 

2、取出表t_od_use_cnt中滿足以下條件的5條記錄:

·日期大于等于20190102;

·user_id中含有45。

語句如下:

  1. SELECT * 
  2. FROM app.t_od_use_cnt 
  3. WHERE date_8 > 20190102 
  4.       AND user_id RLIKE '45' limit 5; 

還可以把RLIKE替換為REGEXP:

  1. SELECT * 
  2. FROM app.t_od_use_cnt 
  3. WHERE date_8 > 20190102 
  4.       AND user_id REGEXP '45' limit 5; 

運行結果如下:

  1. hive (app)> SELECT * 
  2.           > FROM app.t_od_use_cnt 
  3.           > WHERE date_8 > 20190102 
  4.           >       AND user_id RLIKE '45' limit 5; 
  5. OK 
  6. t_od_use_cnt.platform  t_od_use_cnt.app_version  t_od_use_cnt.user_id  t_od_use_cnt.use_cnt  t_od_use_cnt.is_active  t_od_use_cnt.date_8 
  7. 1  1.4  10445  43  1  20190103 
  8. 2  1.5  10450  6  1  20190103 
  9. 2  1.5  10451  38  1  20190103 
  10. 1  1.4  10452  44  1  20190103 
  11. 1  1.5  10453  37  1  20190103 
  12. Time taken: 0.13 seconds, Fetched: 5 row(s) 
  13.   
  14.   
  15.   
  16. hive (app)> SELECT * 
  17.           > FROM app.t_od_use_cnt 
  18.           > WHERE date_8 > 20190102 
  19.           >       AND user_id REGEXP '45' limit 5; 
  20. OK 
  21. t_od_use_cnt.platform  t_od_use_cnt.app_version  t_od_use_cnt.user_id  t_od_use_cnt.use_cnt  t_od_use_cnt.is_active  t_od_use_cnt.date_8 
  22. 1  1.4  10445  43  1  20190103 
  23. 2  1.5  10450  6  1  20190103 
  24. 2  1.5  10451  38  1  20190103 
  25. 1  1.4  10452  44  1  20190103 
  26. 1  1.5  10453  37  1  20190103 
  27. Time taken: 0.352 seconds, Fetched: 5 row(s) 

 

RLIKE、REGEXP主要用于正則匹配,具體的正則表達式匹配規則我們后面的文章來具體說明。

 

責任編輯:武曉燕 來源: 巡山貓說數據
相關推薦

2021-04-30 08:01:36

SQLHiveSelect

2021-04-18 18:13:42

SQLHive表格

2010-09-08 15:51:53

SQL語句where

2024-10-15 16:53:07

2024-10-05 00:00:10

SQL語句指定連接條

2017-05-16 11:20:51

SQL語句解析

2011-04-02 14:06:46

SQL Server MERGE

2021-07-28 07:22:40

SQL順序Hive

2023-03-29 09:22:03

SQLWhere語句

2010-04-20 15:22:34

Oracle SQL

2019-11-06 09:30:35

SQL查詢語句數據庫

2009-11-06 17:13:24

Oracle SQL語

2010-09-26 09:50:36

SQL Where子句

2010-09-17 16:53:14

SQL中CREATE

2010-11-12 13:08:36

動態sql語句

2010-09-07 11:53:00

SQL語句

2010-09-17 09:35:51

SQL中if語句

2009-01-14 09:28:12

OracleSQL10g

2010-09-07 11:24:25

SQL語句

2010-09-07 13:50:41

SQL語句
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜视频在线观看网站 | 日韩91在线 | 久草视频在线播放 | av永久免费 | 日韩精品久久久久久 | 欧美在线观看一区 | 日韩电影免费观看中文字幕 | 成人精品国产免费网站 | 欧美日韩亚洲视频 | 毛片大全 | 91超碰在线 | 久久久久久91香蕉国产 | 亚洲国产成人精品女人久久久 | 久久久久九九九女人毛片 | 日本一区二区视频 | 精品www | 欧美日韩三区 | 久久av网站 | 日韩在线一区二区 | 精品1区2区 | 毛片a区| 欧美在线观看一区 | 国产精品美女久久久久aⅴ国产馆 | 欧美激情综合五月色丁香小说 | 精品欧美乱码久久久久久1区2区 | 少妇av片| 亚洲二区视频 | 欧美日韩一二三区 | 伊人久久精品一区二区三区 | 久久久久久国产一区二区三区 | 国产欧美日韩一区 | 黄色大片免费播放 | 国产免费看 | 蜜桃臀av一区二区三区 | 狠狠色综合久久丁香婷婷 | 欧美精品一区二区在线观看 | 精品一区国产 | 日韩在线精品 | 国产日韩91 | 中文字幕在线一区 | 欧美在线视频一区二区 |