sql的加减乘除运算_SQL-计算、汇总和分组

SQL必知必会-读书笔记(10-13章)

十、创建计算字段

字段(field ):与列的意思相同,经常可以互换。

1.拼接:

concat()需要1个或多个制定的串,各个串之间用逗号分隔。

拼接后命名:AS

SELECT Concat(Rtrim(vend_name),'(',Rtrim(vend_country),')') AS
vend_title
FROM vendors
ORDER BY vend_name;

***Rtrim()去掉右边空格,Ltrim()去掉左边空格,Trim去掉离两边空格

2.算术计算

支持使用的操作符:+ - * / (加减乘除)

SELECT prod_id,quantity,item_price,quantity*item_price AS enpanded_price
FROM orderitems
WHERE order_num=20005;

十一、使用数据处理函数

**不同DBMS支持的函数差异很大

**多数SQL支持处理:文本(删除或增加填充值,大小写转换),算术计算(返回绝对值,代数运算),时间函数(返回日期之差),返回DBMS正在使用的特殊信息(返回用户登录信息,检查版本细节等)。

1.文本处理函数

aba38a01305ce6f9c7364c76d2b9d266.png
常用文本处理函数

Soundex()函数,能够匹配虽有发音类似的词

SELECT cust_name,cust_contact
FROM custormers
WHERE Soundex(cust_contact)=Soundex('Y Lie');

2.日期和时间处理函数

ebedd103b2c12ffa9bf9d6a9c2398080.png
常用日期和时间处理函数
SELECT cust_id,order_num
From orders
WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30';

SELECT cust_id,order_num
From orders
WHERE Year(order_date)=2005 AND Month(order_date)=9;

3.数值处理函数

一般用于代数、三角函数、几何运算,使用并不频繁

178809e94d543e954b3bdd193c3b4530.png

十二、汇总数据

1.聚集函数

8afb3f386ab0c40142a100360b9c42d3.png
SELECT AVG(prod_price) AS avg_price
FROM products;

AVG()只能用于单列

COUNT(*)对所有列进行计数

COUNT(column)对特定列进行计数,忽略NULL值

MAX(column) MIN(column) ,忽略NULL值

SUM() 括号内支持进行算术计算

SELECT SUM(item_price*quantity) AS total_price
FROM orderitems
WHERE order_num =20005;

2.聚集不同值

DISTINCT参数,使用后只计算那些取值不同的聚集值

SELECT AVG(DISTINCT prod_price) AS avg_price
FROM product
WHERE vend_id=1003;

3.组合聚集函数

即在一个SELECT语句中可以同时使用多种聚集函数

SELECT COUNT(*) AS num_items,
        MIN(prod_price) AS price_min,
        MAX(prod_price) AS price_max,
        AVG(prod_price) AS price_avg
FROM products;    

十三、分组数据

1.创建分组【GROUP BY】

SELECT vend_id,COUNT(*) AS num_prod
FROM products
GROUP BY vend_id;

#如果在SELECT中使用表达式,必须在GROUP BY子句中使用相同的表达式。不能用别名

#除聚集计算语句外,SELECT语句中的而每个列都必须在GROUP BY 子句中给出

#如果分组列中有NULL值,则NULL将作为一个分组返回。

#GROUP BY子句必须在WHERE之后,ORDER BY 子句之前。

2.过滤分组【HAVING】

SELECT cust_id, COUNT(*) AS orders
FROM orders
GROUP BY cust_id
HAVING COUNT(*)>=2;

#HAVING 和 WHERE的区别:

1.HAVING在分组后,WHERE分组前

2.HAVING过滤分组,WHERE过滤行

3.分组和排序

f37317f8fbab38b159c8622a09b137e8.png
SELECT order_num, SUM(quantity*item_price) AS ordertotal
FROM orderitems
GROUP BY order_num
HAVING SUM(quantity*item_price)>=50
ORDER BY ordertotal;

4.SELECT子句顺序

abed1b46e328279a21f30dc7e96bf5b8.png
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值