标准sql学习

本文总结了SQL基础知识及进阶技巧,包括CASE...WHEN...THEN...ELSE...END语句的应用,开窗函数的详细解释及其使用场景,limit的用法,concat()函数和Round(number,N)函数的功能介绍,以及instr函数的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. sql基础(强烈推荐)

w3school上供初学者使用足以,还有测试(点个赞)——链接: link.

2. sql加强

1. CASE…WHEN…THEN…ELSE…END

可以解决字段中已知数据与字段的互换,如下所示:

  1. 有一个表,如下所示:
学生科目成绩
student1语文80
student1数学70
student1英语60
student2语文90
student2数学80
student2英语100

需求:通过sql语句实现以下数据展示。

学生语文数学英语
student1807060
student29080100

解答:

SELECT 学生,
SUM(CASE 科目 WHEN '语文' THEN 成绩 ELSE 0 END) AS '语文',
SUM(CASE 科目 WHEN '数学' THEN 成绩 ELSE 0 END) AS '数学',
SUM(CASE WHEN 科目='英语' THEN 成绩 ELSE 0 END) AS '英语'
FROM bb GROUP BY 学生;

2. 开窗函数

开窗函数的调用格式为:函数名(列) OVER(选项)
OVER keyword表示把函数当成开窗函数而不是聚合函数。SQL标准同意将全部聚合函数用做开窗函数,使用OVER keyword来区分这两种使用方法。
如:开窗函数COUNT(*) OVER()对于查询结果的每一行都返回全部符合条件的行的条数。OVER keyword后的括号里还常常加入选项用以改变进行聚合运算的窗口范围。假设OVER keyword后的括号里的选项为空,则开窗函数会对结果集中的全部行进行聚合运算。
注:开窗函数只能出现在 SELECT 或 ORDER BY 子句中。

  1. rank()、dense_rank()、row_number()这三者之间的区别

  2. COUNT(1),COUNT(),COUNT(col)的区别
    ——统计同一列中不同种类的数量占总数的比例
    -COUNT(
    ) 返回组中的项数。包括 NULL 值和重复项。
    -COUNT(ALL expression) 对组中的每一行都计算 expression 并返回非空值的数量。
    expression: 除 text、image 或 ntext 以外任何类型的表达式。不允许使用聚合函数和子查询。
    -COUNT(col)为了去除col列中包含的NULL行,SQL Server必须读取该col的每一行的值,然后确认下是否为NULL,然后在进行计数。因此count(*)应该是比count(col)快的。

  3. Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值

select * from (
	select text,
    	    lag(text, 1) over(order by rownum),
            lag(text, 2) over(order by rownum),
            lead(text, 1) over(order by rownum),
            lead(text, 2) over(order by rownum)
    from alert_log)
where text like 'ORA-%'

3. limit

  1. limit n
    显示前n项

  2. limit n m-n
    显示第n到m项

4.concat()是拼接函数

CONCAT( ROUND( COUNT(cph)/COUNT(1)*100 ,3 ),'%')

5. Round(number,N)是保留N位小数点函数

6.instr 类似like,用法如下:

select * from students where instr(address, ‘beijing’) > 0 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值