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

一.函数

1.group by

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

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

2. count 和 with rollup

select sex, count(*)
from student 
GROUP BY sex

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

 3. Having 

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

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

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

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

select  city as 城市,COUNT(*) as 计数
from
	(select 
	`name`, 
	`sex`, 
	`city`,
	year(NOW()) - year(birthday) as age
from student
	)as temp
where age < 30
group by city
HAVING 计数 >1

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

order by () asc   正序
order by () desc  倒序
order by sex,city desc  会先按照sex 降序,再按照 city降序
order by rand() 随机排序

select  city as 城市,COUNT(*) as 计数
from
	(select 
	`name`, 
	`sex`, 
	`city`,
	year(NOW()) - year(birthday) as age
from student
	)as temp
where age < 30
group by city
order by 计数 asc # 正序

5. limit 限制取出数量

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

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

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

select * 
from student 
where `name` like "郭%"

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

SELECT ROUND(2.333,2)

8. concat() 字符拼接

select 
CONCAT("123","abc")

-- 123abc

9. 去重  distinct() 

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

select
count(DISTINCT city)
from student

 10. group_concat()

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

select city,`name`
from student
group by city

select city,GROUP_CONCAT(`name`)
from student
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



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

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

四. 字符串函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值