【牛客网-SQL入门编程笔记】随手记

1.使用union并集但不去重的方法: union all

2.在判断某个属性是否为空时,用 is null 来判断

3.对于给出的属性列分段【此处采用两种方法】:

【方法一】:在查询的时候,选择多个 if 来判断,当下记录的年龄属于哪个分段

select device_id, gender, 
    if (age <20, '20岁以下',
        if(age >=25, '25岁及以上', 
            if(age BETWEEN 20 AND 24, '20-24岁', '其他'))) as age_cut
from user_profile;

【方法二】:利用 case when end else 来分段查看

1 select device_id, gender
 2 case 
 3     when age < 20 then '小于20岁'
 4     when age <= 24 then '20-24岁'
 5     when age >= 25 then '大于25岁'
 6     else '其他'
 7 end as age_cnt
 8 from user_profile;
 9 --这个与if判断语句的不同之处:
10 /*
11 1.if语句每个每个判断语句之后,先加个逗号在加上这种情况下的结果,再用逗号分隔每个if判断语句
12 2.if判断条件后的括号在整个判断语句的最后面一起加上
13 */

【原题连接-牛客网】:  传送门

4.SQL中提供了对应的年、月、日提取函数,分别为 year(), month(), day()

几个日期差计算函数: datedff(date1,date2) 【date1与date2之间相差多少天】 date_sub(date3, n1) 【date3减去n1天后的日期】 date_add(date4,n2) 【date4加上n2天后的日期】

参考网址:传送门

补充:牛客网中的年月日提取函数的例子存在错误(已联系客服更正) :

 缺少单引号的后半部分

实际运行测试:

 5.SQL中的切割、截取、删除、替换

(1)替换 replace(string, '待替换部分', '替换后的结果')

(2)截取  substr(string, start_point(n), length(m)(*可选参数*) 【start_point 也是一个索引参数,正数代表从从第n个数开始,

  0代表从第一个数开始,负数代表从后向前数第n个数开始,取m个字符(从左向右)】

(3)删除 trim ('被删除的字段' from 列名)

(4)切割 substring_index(string, '切割标志', '位置数n') 【位置数若为正数,代表从左向右第n个分割点左边的全部内容;若为负数,代表从右向左第n个分割点右边的全部内容】

参考例题:传送门

6.group by 与 SQL 中窗口函数()的区别:

(1)group by分组汇总后改变了表的行数,一行只有一个类别。而partiition by函数不会减少原表中的行数。

(2)窗口函数的使用:

  © 窗口函数,又称为联机分析处理,主要解决分组排名问题。


 ©窗口函数的类型: 

        专用窗口函数—— rank()、 dense_rank()、row_number; 

        聚合窗口函数—— max(属性)、 min(属性)、 avg(属性)、sum(属性)、count(属性)等

 专用窗口函数的区别:

  rank() 不连续、间断,当出现并列的情况,会占用不同的‘’存储‘’,例如:1 2 2 4(排名)

  dense_rank()  dense的意思就是连续的,当出现并列的情况,不会占用相同的‘’存储‘’,例如: 1 2 2 3(排名)

  row_number() 按行排序输出,无论是否会出现并列的情况,排名会按照每行出现的先后次序排名, 例如 1 2 3 4(排名)

7.在 sum() 函数中可以添加判断 【sum(if(b.result = 'right', 1, 0))】 判断 b.result 是否为 right,是的话加一,否则加零。

8.派生表记得起个别名。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bow.贾斯汀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值