当前位置:   article > 正文

week06 day02(sql gropy by 、having、order by、limit、运算符、函数)

week06 day02(sql gropy by 、having、order by、limit、运算符、函数)

一.函数

1.group by

  • 按照某一字段进行分组, 会把该字段中值相同的归为一组, 将查询的结果 分类显示, 方便统计。
  • 如果有 WHERE 要放在 WHERE 的后面
  • 语法:  select 字段 from 表名 group by 分组字段;

注意:group by 一般是配合统计函数使用的,如果没有使用统计函数,每个分组只会挑选第一个数据。例如sex = 男中,郭德纲是在第一个,所以选他
  1. select *
  2. from student
  3. group by `sex`

2. count 和 with rollup

  1. select sex, count(*)
  2. from student
  3. GROUP BY sex

 with rollup:  增强统计(在分组统计的基础上,再求和一次)
  1. select sex, count(*)
  2. from student
  3. GROUP BY sex
  4. with rollup

 3. Having 

  •  语法: SELECT 字段 FROM 表名 HAVING 条件
  • 条件字段必须要在结果集中出现 , HAVING 可以写在 GROUP BY 的后面
临时表:临时表必须要 as 别名, 临时表可以作为数据源

因为select 在sql执行中,在where和having之后,所以你给别名age,在where或者having进行条件筛选时没有作用,创建临时表,可以有效解决这一问题

  1. (select
  2. `name`,
  3. `sex`,
  4. `city`,
  5. money,
  6. year(NOW()) - year(birthday) as age
  7. from student
  8. )as temp
按照city分组,且选择计数大于1 的城市

这里用了 临时表, group by 分组, having 对分组后的结果进行进一步筛选

  1. select city as 城市,COUNT(*) as 计数
  2. from
  3. (select
  4. `name`,
  5. `sex`,
  6. `city`,
  7. year(NOW()) - year(birthday) as age
  8. from student
  9. )as temp
  10. where age < 30
  11. group by city
  12. HAVING 计数 >1

4. order by  排序(正序,倒序,随机排) (运行顺序在select 之后) 

  1. order by () asc   正序
  2. order by () desc  倒序
  3. order by sex,city desc 会先按照sex 降序,再按照 city降序
  4. order by rand() 随机排序
  5. select city as 城市,COUNT(*) as 计数
  6. from
  7. (select
  8. `name`,
  9. `sex`,
  10. `city`,
  11. year(NOW()) - year(birthday) as age
  12. from student
  13. )as temp
  14. where age < 30
  15. group by city
  16. order by 计数 asc # 正序

5. limit 限制取出数量

  1. select 字段 from 表名 limit m;  -- 从第 1 个到第 m 个
  2. select 字段 from 表名 limit m, n;  -- 从第 m 个开始,往下取n 个
  3. select 字段 from 表名 limit m offset n;  -- 跳过前 n 个, 取后面的 m 个

6. LIKE (模糊查询)   regexp语法与like类似(没有? 贪婪模式)

在模糊查询中,_ 代表的是匹配一个字符串, %代表是0~多位

  1. select *
  2. from student
  3. where `name` like "郭%"

7. ROUND(X,2)   保留几位小数

SELECT ROUND(2.333,2)

8. concat() 字符拼接

  1. select
  2. CONCAT("123","abc")
  3. -- 123abc

9. 去重  distinct() 

城市有重复,看一共有哪些城市

  1. select
  2. count(DISTINCT city)
  3. from student

 10. group_concat()

当不使用group_concat时,结果如下图,上海后的name只有一个人名字

  1. select city,`name`
  2. from student
  3. group by city

  1. select city,GROUP_CONCAT(`name`)
  2. from student
  3. group by city

11. MOD(X,Y) 

 返回 x/y 的模

二. 运算符

1. xor 逻辑异或:

  • (TRUE,TRUE)   FALSE
  • (TRUE,FALSE)  TRUE
  • (FALSE,TRUE)  TRUE
  • (FALSE,FALSE)  FALSE

  

三. 日期函数

 date_format



  1. -- 1997-10-01
  2. select DATE_FORMAT(birthday,"%Y-%m-%d") FROM STUDENT

 date_add
select DATE_ADD("2019-8-8",INTERVAL 1 YEAR) from student

四. 字符串函数

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/230563
推荐阅读
相关标签
  

闽ICP备14008679号