一、排序

格式:select * from 表 order by 字段 asc|desc

1、查询所有的商品进行排序(升序asc、降序desc)

mysql> select * from product order by price asc;
+-----+--------+-------+---------------------+
| pid | pname | price | pdate |
+-----+--------+-------+---------------------+
| 3 | 小赵 | -50 | 2019-01-28 15:49:32 |
| 1 | 小兵 | 0.03 | 2019-01-28 15:48:46 |
| 2 | 小王 | 33 | 2019-01-28 15:49:11 |
| 4 | 小王 | 33 | 2019-01-28 16:16:45 |
+-----+--------+-------+---------------------+
4 rows in set (0.03 sec) mysql> select * from product order by price desc;
+-----+--------+-------+---------------------+
| pid | pname | price | pdate |
+-----+--------+-------+---------------------+
| 2 | 小王 | 33 | 2019-01-28 15:49:11 |
| 4 | 小王 | 33 | 2019-01-28 16:16:45 |
| 1 | 小兵 | 0.03 | 2019-01-28 15:48:46 |
| 3 | 小赵 | -50 | 2019-01-28 15:49:32 |
+-----+--------+-------+---------------------+
4 rows in set (0.00 sec)

2、查询名称中含有“王”字的商品,按照价格降序排序!

mysql> select * from product where pname like '%王%' order by price desc;
+-----+--------+-------+---------------------+
| pid | pname | price | pdate |
+-----+--------+-------+---------------------+
| 4 | 小王 | 35 | 2019-01-29 15:29:59 |
| 2 | 小王 | 33 | 2019-01-28 15:49:11 |
+-----+--------+-------+---------------------+
2 rows in set (0.00 sec)

二、常用的聚合函数:sum()求和,avg()平均,max()最大值,min()最小值,count()计数;

  注意:聚合函数不统计 null值

1、获得所有商品价格的总和;

mysql> select sum(price) from product;
+------------+
| sum(price) |
+------------+
| 18.03 |
+------------+
1 row in set (0.04 sec)

2、获取所有价格的平均价格:

mysql> select avg(price) from product;
+------------+
| avg(price) |
+------------+
| 4.5075 |
+------------+
1 row in set (0.00 sec)

3、获得所有商品的个数;

mysql> select count(*) from product;
+----------+
| count(*) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)

三、分组

1、准备数据

mysql> alter table product add cid varchar(32);  //添加分类
Query OK, 0 rows affected (1.18 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> desc product;
+-------+-------------+------+-----+-------------------+-----------------------------
| Field | Type | Null | Key | Default | Extra
+-------+-------------+------+-----+-------------------+-----------------------------
| pid | int(11) | NO | PRI | NULL | auto_increment
| pname | varchar(20) | YES | | NULL |
| price | double | YES | | NULL |
| pdate | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP
| cid | varchar(32) | YES | | NULL |
+-------+-------------+------+-----+-------------------+-----------------------------
5 rows in set (0.11 sec)

//初始化数据
mysql> update product set cid='';
Query OK, 4 rows affected (0.15 sec)
Rows matched: 4 Changed: 4 Warnings: 0 mysql> update product set cid='' where pid in (2,3,4);
Query OK, 3 rows affected (0.14 sec)
Rows matched: 3 Changed: 3 Warnings: 0 mysql> select * from product;
+-----+--------+-------+---------------------+------+
| pid | pname | price | pdate | cid |
+-----+--------+-------+---------------------+------+
| 1 | 小兵 | 0.03 | 2019-01-31 15:53:07 | 1 |
| 2 | 小王 | 33 | 2019-01-31 15:54:25 | 2 |
| 3 | 小赵 | -50 | 2019-01-31 15:54:25 | 2 |
| 4 | 小王 | 35 | 2019-01-31 15:54:25 | 2 |
+-----+--------+-------+---------------------+------+
4 rows in set (0.00 sec)

2、查询:根据cid分组,分组后统计商品的个数.

mysql> select cid , count(*) from product group by cid;
+------+----------+
| cid | count(*) |
+------+----------+
| 1 | 1 |
| 2 | 3 |
+------+----------+
2 rows in set (0.05 sec)

3、查询:根据cid分组,分组统计每组商品的平均价格:

mysql> select cid,avg(price) from product group by cid having avg(price) > 5;
+------+------------+
| cid | avg(price) |
+------+------------+
| 2 | 6 |
+------+------------+
1 row in set (0.07 sec)

4、查询经验总结,优先级顺序如下:

select distinct *| 字段...
from 表
where 查询条件
group by 分组字段
having 分组条件
order by 排序字段 asc|desc

待续..........................

MySQL之排序、分组(五)的更多相关文章

  1. MySQL的JOIN(五):JOIN优化实践之排序

    这篇博文讲述如何优化JOIN查询带有排序的情况.大致分为对连接属性排序和对非连接属性排序两种情况.插入测试数据. CREATE TABLE t1 ( id INT PRIMARY KEY AUTO_I ...

  2. 【mysql】关联查询_子查询_排序分组优化

    1. 关联查询优化 1.1 left join 结论: ①在优化关联查询时,只有在被驱动表上建立索引才有效! ②left join 时,左侧的为驱动表,右侧为被驱动表! 1.2 inner join ...

  3. Hadoop日记Day18---MapReduce排序分组

    本节所用到的数据下载地址为:http://pan.baidu.com/s/1bnfELmZ MapReduce的排序分组任务与要求 我们知道排序分组是MapReduce中Mapper端的第四步,其中分 ...

  4. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  5. 【MySQL】排序原理与案例分析

    前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐 ...

  6. MySQL:基础—数据分组

    MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...

  7. Mysql查看版本号的五种方式介绍

    Mysql查看版本号的五种方式介绍 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-03   一.使用命令行模式进入mysql会看到最开始的提示符;二.命令行中使用status可以看到 ...

  8. mysql 自定义排序顺序

    mysql 自定义排序顺序 实例如:在sql语句中加入ORDER BY FIELD(status,3,4,0,2,1)语句可定义排序顺序 SELECT tsdvoucher0_.VOUCHER_ID ...

  9. mysql 查询每个分组前N条记录

    mysql 查询每个分组前N条记录 假设存在表movie,  有字段 id, part(地区), mcount(观看次数) 现查询每个地区观看次数最多的3部movie, 则表 ###id虽未存在gro ...

  10. 我的MYSQL学习心得(五)

    原文:我的MYSQL学习心得(五) 我的MYSQL学习心得(五) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...

随机推荐

  1. vue 源代码创建tabs

    <ul class="tabs"> <li class="li-tab" v-for="(item,index) in tabsPa ...

  2. 范性for语义以及pair和ipair的区别

    详情参考 lua手册 1. 范性for语义 在了解pair和ipair前先简单了解下lua中的for循环,这里只阐述范性for循环的语义,范性 for 在自己内部保存迭代函数,实际上它保存三个值:迭代 ...

  3. NOT NULL constraint faile(慢就是快,少即是多)

    在学习数据库orm操作的过程中,遇到一个写不进去数据的问题 在创建数据库进行数据写入时出错,错误信息是 NOT NULL constraint faile(错误信息没有第一时间找到) 数据库,包括表都 ...

  4. Linux lvs-NAT模式配置详解

    本篇文档主要是记录NAT模式实现过程,以及各配置步骤的原理.“lvs三种模式工作原理”中描述了LVS的NAT.DR.TUN三种模式的工作原理. NAT模式是通过director将报文目标IP地址修改, ...

  5. Java集合的总结

    参考博客: http://www.jianshu.com/p/63e76826e852 http://www.cnblogs.com/LittleHann/p/3690187.html https:/ ...

  6. MySql数据库字段排序规则不一致产生的一个问题

    最近项目向MySql迁移,迁移完毕后,在获取用户权限时产生了一个异常,跟踪进去获取执行的语句如下, SELECT PermissionId FROM spysxtPermission WHERE (R ...

  7. P3414 SAC#1 - 组合数 题解

    https://www.luogu.org/problemnew/show/P3414(题目传送) 这道题提醒大家一定要认真审题.看清楚后发现n的数据范围稍微小于long long类型的范围(看不清被 ...

  8. 内核空间内存申请函数kmalloc kzalloc vmalloc的区别

    我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free().注意:动态申请的内存使用完后必须要释放,否则会造成内存 ...

  9. 使用vcastr22.swf做flash版网页视频播放器

    flash的安装设置参考  Flash设置(各种版本浏览器包括低版本IE) 百度搜索下载vcastr22.swf文件 然后使用方式很简单,浏览器安装flash相关插件就能看了 视频路径主要在这里,视频 ...

  10. Java基础--二维数组

    1.二维数组的定义 二维数组表示行列二维结构,在栈空间中的二维数组的地址指向堆空间中的一维数组,堆空间中的一维数组的地址又指向一维数组所在的内存空间. 2.二维数组的声明 二维数组声明有3种方式,推荐 ...