MySQL之排序、分组(五)
一、排序
格式: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之排序、分组(五)的更多相关文章
- MySQL的JOIN(五):JOIN优化实践之排序
这篇博文讲述如何优化JOIN查询带有排序的情况.大致分为对连接属性排序和对非连接属性排序两种情况.插入测试数据. CREATE TABLE t1 ( id INT PRIMARY KEY AUTO_I ...
- 【mysql】关联查询_子查询_排序分组优化
1. 关联查询优化 1.1 left join 结论: ①在优化关联查询时,只有在被驱动表上建立索引才有效! ②left join 时,左侧的为驱动表,右侧为被驱动表! 1.2 inner join ...
- Hadoop日记Day18---MapReduce排序分组
本节所用到的数据下载地址为:http://pan.baidu.com/s/1bnfELmZ MapReduce的排序分组任务与要求 我们知道排序分组是MapReduce中Mapper端的第四步,其中分 ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 【MySQL】排序原理与案例分析
前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐 ...
- MySQL:基础—数据分组
MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...
- Mysql查看版本号的五种方式介绍
Mysql查看版本号的五种方式介绍 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-03 一.使用命令行模式进入mysql会看到最开始的提示符;二.命令行中使用status可以看到 ...
- mysql 自定义排序顺序
mysql 自定义排序顺序 实例如:在sql语句中加入ORDER BY FIELD(status,3,4,0,2,1)语句可定义排序顺序 SELECT tsdvoucher0_.VOUCHER_ID ...
- mysql 查询每个分组前N条记录
mysql 查询每个分组前N条记录 假设存在表movie, 有字段 id, part(地区), mcount(观看次数) 现查询每个地区观看次数最多的3部movie, 则表 ###id虽未存在gro ...
- 我的MYSQL学习心得(五)
原文:我的MYSQL学习心得(五) 我的MYSQL学习心得(五) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...
随机推荐
- 判定你的java应用是否正常(是否内存、线程泄漏)的一个简单方法
给大家推荐一个最简单的判定你的java应用是否正常的方法: step1:部署你的应用,让它跑起来: step2:打开jdk下bin目录下的jconsole.exe工具,连接到你的应用——以监测线程和内 ...
- C语言中结构体内存对齐
先写一个小程序: #include<stdio.h> struct student { int a; char k; short m; }; int main() { st ...
- LIS ZOJ - 4028
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4028 memset超时 这题竟然是一个差分约束 好吧呢 对于每一个a[i] ...
- 常规 nginx 代理apache
nginx: server { server_name www.xx.com xx.com; access_log /data/wwwlogs/www.xx.com_nginx.log combine ...
- MySQL物理备份 xtrabackup
MySQL 备份之 xtrabackup | innobackupex Xtrabackup 介绍 Xtrabackup 是一个对 InnoDB 做数据备份的工具,支持在线热备份(备份时不影响数据读写 ...
- 配置GitHub Push自动触发Jenkins的构建
这里以gitbook的项目为例,GitHub中的gitbook项目部署在Jenkins中,执行git push命令时自动执行Jenkins构建,其他项目只是最后的执行脚本不同 环境准备 安装Jenki ...
- 关于docker的基础教程
对于docker来说,详细参考如下博客 http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
- hbuilder、hbuilderx和vscode对比
1. 从内存来对比 1.1 vscode占用内存 打开同一个项目,发现vscode占用内存比较多 1.2 HBuilder占用内存 1.3 HBuilderx占用内存 1.4 对比 从内存上来看,HB ...
- 在PHP中如何把数组写成配置文件
1.配置文件 <?php return array ( 556770 => '65460d6684dcad3d0a92f1feb7fde199', 567701 => '9c2acd ...
- 阿里云Redis开发规范
转自: https://yq.aliyun.com/articles/531067 摘要: 本文介绍了在使用阿里云Redis的开发规范,从键值设计.命令使用.客户端使用.相关工具等方面进行说明,通过本 ...