分组与聚合函数的演练

太过爱你忘了你带给我的痛 2022-11-27 12:21 206阅读 0赞

一:数据准备:

  1. -- 创建 "京东" 数据库
  2. create database jing_dong charset=utf8;
  3. -- 使用 "京东" 数据库
  4. use jing_dong;
  5. -- 创建一个商品goods数据表
  6. create table goods(
  7. id int unsigned primary key auto_increment not null,
  8. name varchar(150) not null,
  9. cate_name varchar(40) not null,
  10. brand_name varchar(40) not null,
  11. price decimal(10,3) not null default 0,
  12. is_show bit not null default 1,
  13. is_saleoff bit not null default 0
  14. );
  15. -- goods表中插入数据
  16. insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default);
  17. insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default);
  18. insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','8499',default,default);
  19. insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','2799',default,default);
  20. insert into goods values(0,'x240 超极本','超级本','联想','4880',default,default);
  21. insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','4299',default,default);
  22. insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','7999',default,default);
  23. insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','1998',default,default);
  24. insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','3388',default,default);
  25. insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','2788',default,default);
  26. insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','3499',default,default);
  27. insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','2899',default,default);
  28. insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','9188',default,default);
  29. insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','3699',default,default);
  30. insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','4288',default,default);
  31. insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','5388',default,default);
  32. insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','28888',default,default);
  33. insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default);
  34. insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);
  35. insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','6888',default,default);
  36. insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);

二:演练:
1:查询类型cate_name为 ‘超级本’ 的商品名称、价格

  1. mysql> select name,price from goods where cate_name = "超级本";
  2. +-----------------------------+----------+
  3. | name | price |
  4. +-----------------------------+----------+
  5. | x240 超极本 | 4880.000 |
  6. | u330p 13.3英寸超极本 | 4299.000 |
  7. | svp13226scb 触控超极本 | 7999.000 |
  8. +-----------------------------+----------+
  9. 3 rows in set (0.00 sec)

2:显示商品的分类
方式一:按照商品类型分组:

  1. mysql> select cate_name from goods group by cate_name;
  2. +---------------------+
  3. | cate_name |
  4. +---------------------+
  5. | 台式机 |
  6. | 平板电脑 |
  7. | 服务器/工作站 |
  8. | 游戏本 |
  9. | 笔记本 |
  10. | 笔记本配件 |
  11. | 超级本 |
  12. +---------------------+
  13. 7 rows in set (0.00 sec)

方式二:查询所有类型,然后去重。

  1. mysql> select distinct cate_name from goods;
  2. +---------------------+
  3. | cate_name |
  4. +---------------------+
  5. | 笔记本 |
  6. | 游戏本 |
  7. | 超级本 |
  8. | 平板电脑 |
  9. | 台式机 |
  10. | 服务器/工作站 |
  11. | 笔记本配件 |
  12. +---------------------+
  13. 7 rows in set (0.00 sec)

3:求所有电脑产品的平均价格,并且保留两位小数

  1. mysql> select round(avg(price),2) as avg_price from goods;
  2. +-----------+
  3. | avg_price |
  4. +-----------+
  5. | 5570.57 |
  6. +-----------+
  7. 1 row in set (0.00 sec)

4:显示每种商品的平均价格

  1. mysql> select cate_name,round(avg(price),2) from goods group by cate_name;
  2. +---------------------+---------------------+
  3. | cate_name | round(avg(price),2) |
  4. +---------------------+---------------------+
  5. | 台式机 | 4821.25 |
  6. | 平板电脑 | 2724.67 |
  7. | 服务器/工作站 | 11363.00 |
  8. | 游戏本 | 8499.00 |
  9. | 笔记本 | 3732.33 |
  10. | 笔记本配件 | 2399.00 |
  11. | 超级本 | 5726.00 |
  12. +---------------------+---------------------+
  13. 7 rows in set (0.00 sec)

5:查询每种类型的商品中 最贵、最便宜、平均价、数量

  1. mysql> select cate_name,max(price),min(price),avg(price),count(*) from goods group by cate_name;
  2. +---------------------+------------+------------+---------------+----------+
  3. | cate_name | max(price) | min(price) | avg(price) | count(*) |
  4. +---------------------+------------+------------+---------------+----------+
  5. | 台式机 | 9188.000 | 2899.000 | 4821.2500000 | 4 |
  6. | 平板电脑 | 3388.000 | 1998.000 | 2724.6666667 | 3 |
  7. | 服务器/工作站 | 28888.000 | 4288.000 | 11363.0000000 | 4 |
  8. | 游戏本 | 8499.000 | 8499.000 | 8499.0000000 | 1 |
  9. | 笔记本 | 4999.000 | 2799.000 | 3732.3333333 | 3 |
  10. | 笔记本配件 | 6999.000 | 99.000 | 2399.0000000 | 3 |
  11. | 超级本 | 7999.000 | 4299.000 | 5726.0000000 | 3 |
  12. +---------------------+------------+------------+---------------+----------+
  13. 7 rows in set (0.00 sec)

6:查询所有价格大于平均价格的商品,并且按价格降序排序

  1. mysql> select * from goods where price > (select avg(price) from goods) order by price desc;
  2. +----+---------------------------------------+---------------------+------------+-----------+---------+------------+
  3. | id | name | cate_name | brand_name | price | is_show | is_saleoff |
  4. +----+---------------------------------------+---------------------+------------+-----------+---------+------------+
  5. | 17 | mac pro专业级台式电脑 | 服务器/工作站 | 苹果 | 28888.000 | | |
  6. | 13 | imac me086ch/a 21.5英寸一体电脑 | 台式机 | 苹果 | 9188.000 | | |
  7. | 3 | g150th 15.6英寸游戏本 | 游戏本 | 雷神 | 8499.000 | | |
  8. | 7 | svp13226scb 触控超极本 | 超级本 | 索尼 | 7999.000 | | |
  9. | 18 | hmz-t3w 头戴显示设备 | 笔记本配件 | 索尼 | 6999.000 | | |
  10. | 20 | x3250 m4机架式服务器 | 服务器/工作站 | ibm | 6888.000 | | |
  11. +----+---------------------------------------+---------------------+------------+-----------+---------+------------+
  12. 6 rows in set (0.00 sec)

发表评论

表情:
评论列表 (有 0 条评论,206人围观)

还没有评论,来说两句吧...

相关阅读