表2
A | B | C |
A1 | B1 | C1 |
A2 | B2 | C2 |
表3
A | D | E | F |
A1 | D1 | E1 | F1 |
A2 | D2 | E2 | F2 |
六、创建计算字段
需要直接从数据库中检索出转换、计算或格式化过的数据,而不是检索出数据,然后再在客户端应用程序中重新格式化
拼接字段
比如将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;
会输出
B | C |
B1 | C1 |
select B,C,B*C as Q
from 表2
where A=A1;
会输出
B | C | Q |
B1 | C1 | B1*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子句的语序: