赞
踩
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.文本处理函数
Soundex()函数,能够匹配虽有发音类似的词
- SELECT cust_name,cust_contact
- FROM custormers
- WHERE Soundex(cust_contact)=Soundex('Y Lie');
2.日期和时间处理函数
- 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.数值处理函数
一般用于代数、三角函数、几何运算,使用并不频繁
十二、汇总数据
1.聚集函数
- 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.分组和排序
- 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子句顺序
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。