sql 两个表列包含_《SQL必知必会》读书笔记(2)

84707ec284f587414f5b5fcbe5c44a1b.png

表2

ABC
A1B1C1
A2B2C2

表3

ADEF
A1D1E1F1
A2D2E2F2

六、创建计算字段

需要直接从数据库中检索出转换、计算或格式化过的数据,而不是检索出数据,然后再在客户端应用程序中重新格式化

拼接字段

比如将AB列结合输出,可使用特殊操作符号+或ll来标识

select A+'('+B+')'

from 表2

order by A;

会输出

A1 (B1)

A2 (B2)

去掉空格:rtrim()函数去掉字符串右边空格,ltrim()去掉左边空格,trim()去掉字符串左右两边空格

select rtrim(A)+'('+rtrim(B)+')'

from 表2

order by A;

会输出

A1(B1)

A2(B2)

增加别名:对组合出的字符创造和别名的列输出。

别名其他用途:在实际的表列名包含不合法的字符如空格时重新命名,在原来的名字含混或容易误解时扩充它。

select rtrim(A)+'('+rtrim(B)+')'

as D

from 表2

order by A;

会输出

D

A1(B1)

A2(B2)

执行算数计算:得出计算结果,算数操作符:+-*/

select B,C

from 表2

where A=A1;

会输出

BC
B1C1

select B,C,B*C as Q

from 表2

where A=A1;

会输出

BCQ
B1C1B1*C1

七、使用函数处理数据

用途包括:处理文本字符串,如删除或填充,转换大小写;用于在数值数据上进行算数操作,如返回绝对值,进行代数运算;用于处理日期和时间值,并提取特定成分,如返回两个日期的差;返回特殊信息,如返回用户登录信息。

具体函数可在网上搜索,如下举例:

输出大写:

select B,upper(C) as Q

from 表2

order by A;

检索日期:每个数据库的函数使用方法不同,下方已sql server为例

select B,

from 表2

where datepart(yy,order_date)=2019

八、汇总数据

聚集函数

确定表中行数

获得表中某些行的和

找出表列的最大值、最小值、平均值

AVG()函数:对表中行数计数并计算列之和,求该列的平均值。可以返回所有列或部分列或行。

select AVG(A)as Y

from 表2;

select AVG()as Y

from 表2

where A=A2;

count()函数,使用count(*)对行进行计数,不管表列中包含的是否为空;使用count(column)对特定列中具有值的行进行计数。

select count(*)as Y

from 表2;

输出

Y

2

max()、min()函数,返回指定列中最大值最小值,要求指定列名。在用于文本数据时,返回该列排序最后、前的行。会忽略值为null的行。

select min(B)as Y

from 表2;

sum()函数,返回指定列的和。

如:select sum(B)as Y

from 表2

where A=A2;

sum()还可以用来合计计算值,sum函数忽略列值为null的行。

select sum(B*C)as Y

from 表2

where A=A2;

聚集不同值

对所有行执行计算,指定all参数或不指定参数,all一般为默认。

只包含不同值,指定distinct参数。注:distinct只能用于count(),不能用于distinct(*)

select AVG(distinct B)as Y

from 表2

where A=A2;

组合聚集函数

select count(*)as Y

min(A2) as Z1

max(A2) as Z2

avg(A2) as Z3

from 表2;

九、分组数据

创建分组:在表2中统计多少个不同的B

select B,count(*)as Y

from 表2

group by B;

过滤分组:

having子句。用法类似于where,但where过滤行,在数据分组前进行过滤,having过滤组,在数据分组后进行过滤。

select A,count(*) as Y

from 表2

group by A

having count(*)>=2;

分组和排序:注意group by和order by的区别。

另外注意select子句的语序:

3818d7fd3bc4b9cfb69f35996e2f059b.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值