mysql查询4-6_mysql-6 数据检索(4)

汇总数据

函数

说明

AVG()

返回某列的平均数

COUNT()

返回某列的行数

MAX()

返回某列的最大值

MIN()

返回某列的最小值

SUM()

返回某列值的和

1、AVG函数

SELECT AVG(prod_price) AS avg_price FROM products;

f68f5bfd06c6ad8c84e80f5b3704193f.png

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

78a087e388b596b53aeb3f005eb6b507.png

2、count()函数

SELECT COUNT(*) AS num_cust FROM customers;

f7679bbc7f8e30e7a370825408c31a83.png

SELECT COUNT(cust_email) AS num_cust FROM customers;

b92891d4662d14aeec38b071300a48c5.png

这条select语句使用count(cust_email)对cust_email列中有值的进行计数,在此例子中,cust_email的计算式3次,表示5个客户中只有三个客户有电子邮件

3、max()函数

SELECT MAX(prod_price) AS max_price FROM products;

eaefe7e9033721dcd4772dc8cedbceae.png

4、min()函数

SELECT MIN(prod_price) AS min_price FROM products;

0ac10cd92a7f92f9e3dcce855783bfa2.png

5、sum()函数

SELECT SUM(quantity) AS items_ordered FROM orderitems WHERE order_num = 20005;

2ea7afbe7c3d52063823f9ce34c6800b.png

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

43516439da6c19f255de8d9c2d9e9967.png

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

2d92258e98f394077d461dd6f3b7d14d.png

分组数据    group by

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

9fd94f5fdbbf187bedcced328466d801.png

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

17bf0445ccd71ca8287dc649781d4a71.png

SELECT prod_price,vend_id,COUNT(*) AS num_prods FROM products WHERE prod_price >=10 GROUP BY vend_id HAVING COUNT(*)>=2;

7da531623df8dd112c114da03d8785ff.png

SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id HAVING COUNT(*)>=2;

9ee0012e9bf779650c080b58950220ec.png

order by 1、排序产生的输出 2、任意列都可以使用 3、不一定需要

group by 1、分组行,但输出可能不是分组的顺序 2、只可能使用选择列或表达式列,而且必须使用每个选择列表达式 3、如果与聚集函数一起使用列,则必须使用

where过滤行,having过滤组

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

a075a5d072005cc22e9b9178f6cedffa.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;

86d47ba2fe82db61e6c6d7d199b99c54.png

使用子查询

SELECT order_num FROM orderitems WHERE prod_id = 'TNT2';

SELECT cust_id FROM orders WHERE order_num IN (20005,20007);

SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id= 'TNT2');

6620676aa99ecd1dcb9d95d05c6b67e7.png

SELECT AVG(prod_price) *AS avg_price FROM products;

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

SELECT COUNT(*) AS num_cust FROM customers;

SELECT COUNT(cust_email) AS num_cust FROM customers;

SELECT MAX(prod_price) AS max_price FROM products;

SELECT MIN(prod_price) AS min_price FROM products;

SELECT SUM(quantity) AS items_ordered FROM orderitems WHERE order_num= 20005;

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

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

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

SELECT cust_id FROM orders ;

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

SELECT prod_price,vend_id,COUNT(*) AS num_prods FROM products WHERE prod_price >=10 GROUP BY vend_id HAVING COUNT(*)>=2;

SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id HAVING COUNT(*)>=2;

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

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

SELECT order_num FROM orderitems WHERE prod_id= 'TNT2';

SELECT cust_id FROM orders WHERE order_num IN (20005,20007);

SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id= 'TNT2');

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值