SELECT语句

1、检索所有列

从表A中提取所有用户的所有字段(列)

  1. --检索所有列
  2. SELECT *
  3. FROM TABLE_A
  4. ;

通配符(*)表示所有信息 结束SQL语句用“;” 函数:大小写均可 字段名:必须和表中的大小写保持一致

结果:
image.png

2、检索单个列

从表A中提取所有用户的1个字段:“behavior_type”

  1. --检索单个列
  2. SELECT behavior_type
  3. FROM TABLE_A
  4. ;

字段名之间要有“,”英文逗号 字段名之间无需空格

结果:
image.png

3、检索多个列

从表A中提取所有用户的3个字段:
“behavior_type, biz_scene, biz_name”

  1. --检索多个列
  2. SELECT behavior_type
  3. ,biz_scene
  4. ,biz_name
  5. FROM TABLE_A
  6. ;

字段名之间要有“,”英文逗号 字段名之间无需空格

结果:
image.png

4、检索不同的行

找出behavior_type中包含哪些不同的类别,类似excel的筛选功能

  1. --检索不同的行
  2. SELECT DISTINCT behavior_type
  3. FROM TABLE_A

DISTINCT 需要放在列名的前面 DISTINCT后面跟着多个列名,则所有列名都会被DISTINCT影响

结果:
image.png

5、限制结果

仅提取少数结果

  1. --检索所有列,输出不多于2行数据
  2. SELECT *
  3. FROM TABLE_A
  4. LIMIT 2
  5. ;
  6. --检索所有列,输出从行5开始的2行(第一个数为开始位置,第二个数为要检索的行数)
  7. SELECT *
  8. FROM TABLE_A
  9. LIMIT 5,2
  10. ;

结果:
image.png

6、使用完全限定的表名

“表名.字段名”的模式

  1. SELECT TABLE_A.behavior_type
  2. FROM TABLE_A
  3. ;

7、order by

单列数据排序,类似excel中的“升序”

  1. --升序
  2. SELECT behavior_type
  3. FROM TABLE_A
  4. ORDER BY behavior_type
  5. ;
  6. --降序,需要在代码后面添加“DESC
  7. SELECT behavior_type
  8. FROM TABLE_A
  9. ORDER BY behavior_type DESC
  10. ;

多列数据排序,类似excel中的优先列1“升序/降序”,其次是列2“升序/降序”

  1. --降序,需要在代码后面添加“DESC”,DESC仅修饰前面的字段,如果需多个降序排列,则需要每个字段前增加这个
  2. SELECT behavior_type
  3. ,biz_scene
  4. ,biz_name
  5. FROM TABLE_A
  6. ORDER BY behavior_type DESC,biz_name
  7. ;

结果:
image.png

找出一列数据的最大值:

  1. SELECT dt
  2. FROM TABLE_A
  3. ORDER BY dt DESC
  4. LIMIT 1

image.png

WHERE语句

1、过滤数据-单个标准

从表A中提取特定用户(biz_name为WalkPrize的用户)的3个字段:
“behavior_type, biz_scene, biz_name”

  1. SELECT dt
  2. ,behavior_type
  3. ,biz_name
  4. ,biz_scene
  5. FROM TABLE_A
  6. WHERE biz_name = 'WalkPrize'
  7. ORDER BY dt
  8. ;
  9. WHERE后面的操作符:
  10. = 等于
  11. <>, != 不等于
  12. <, <=, >, >= 小于,小于等于,大于,大于等于
  13. BETWEEN 在指定的两个值之间
  14. WHERE biz_name = 5
  15. WHERE biz_name <> 5
  16. WHERE biz_name != 5
  17. WHERE biz_name between 5 and 10

“=”的前后都需有空格 字符串字段信息需要用’’引号,数字不需要用引号’’ 字段信息入参需区分大小写 ORDER BY 需出现在“WHERE”函数的后面

结果:
image.png

检查页面中是否有空值

  1. SELECT dt
  2. FROM TABLE_A
  3. where dt is NULL

2、过滤数据-多个过滤标准

  1. SELECT dt
  2. ,behavior_type
  3. ,biz_name
  4. ,biz_scene
  5. FROM TABLE_A
  6. WHERE biz_name = 'WalkPrize' and dt > '20191101'
  7. ORDER BY dt
  8. ;

and 表示两个过滤条件“且” or 表示两个过滤条件“或” SQL优先处理“and”,然后才处理“or”,需要用“()”来处理 WHERE (biz_name = ‘WalkPrize’ or biz_scene = happy ) and dt > ‘20191101’

当需要指定条件范围时,为 WHERE dt IN(’20191101’,’20191108’)
当需要指定不再条件范围时,为 WHERE dt NOT IN(’20191101’,’20191108’)

3、通配符LIKE、%

  1. --筛选包含“cl”开头的信息,“cl%”表示cl后面可跟任何信息
  2. SELECT behavior_type
  3. FROM TABLE_A
  4. WHERE behavior_type LIKE 'cl%'

%cl% 表示可以匹配包含cl的信息,无论是出现在开头、中间、还是结尾 c%l 表示匹配的信息,以c开头,以l结尾

image.png

其他

4、按照不同的hehavior type统计session_id的数量

  1. SELECT behavior_type
  2. ,count(distinct session_id) a
  3. FROM TABLE_A
  4. WHERE biz_name = 'WalkPrize'
  5. GROUP BY behavior_type
  6. ;

image.png