mysql 分组排序取最值
- 查各个用户下单最早的一条记录
- 查各个用户下单最早的前两条记录
- 查各个用户第二次下单的记录
一、建表填数据:
SET NAMES utf8mb4;
-- 取消外键约束
SET FOREIGN_KEY_CHECKS = 0; -- ----------------------------
-- Table structure for order_table
-- ----------------------------
DROP TABLE IF EXISTS `order_table`;
CREATE TABLE `order_table` (
`order_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ----------------------------
-- Records of order_table
-- ----------------------------
BEGIN;
INSERT INTO `order_table` VALUES (1, 1, '2019-03-03 16:29:58');
INSERT INTO `order_table` VALUES (2, 1, '2019-03-04 16:30:17');
INSERT INTO `order_table` VALUES (3, 1, '2019-03-05 16:30:29');
INSERT INTO `order_table` VALUES (4, 2, '2019-03-03 16:35:23');
INSERT INTO `order_table` VALUES (5, 2, '2019-03-04 16:35:34');
COMMIT;
-- 添加外键约束
SET FOREIGN_KEY_CHECKS = 1;
二、解决上述三个问题
1、查各个用户下单最早的一条记录
select ot.* FROM order_table ot
where create_time = (
SELECT min(create_time) FROM order_table where user_id = ot.user_id
) order by ot.user_id
结果:

2、查各个用户下单最早的前两条记录
-- 分组最小的前两条
select * from order_table ot
where 2 > (select count(*) from order_table where user_id = ot.user_id and create_time < ot.create_time )
order by ot.user_id, ot.create_time
结果:

3、查各个用户第二次下单的记录
-- 分组排序,取create_time倒数第二小的数据
select * FROM (
-- 按user_id分组、create_time asc排序、取create_time最小和倒数第二小的值
select * from order_table oot
where 2 > (
select count(*)
from order_table
where user_id = oot.user_id and create_time < oot.create_time
)
order by oot.user_id, oot.create_time
) as ttt where
ttt.order_id not in
( -- 按user_id分组、create_time asc排序、取create_time最小的值
select ot.order_id FROM order_table ot
where create_time = (
SELECT min(create_time) FROM order_table where user_id = ot.user_id
) order by ot.user_id
)
结果:

参考链接:http://www.manongjc.com/article/1082.html
mysql 分组排序取最值的更多相关文章
- mysql分组排序取最大值所在行,类似hive中row_number() over partition by
如下图, 计划实现 :按照 parent_code 分组, 取组中code最大值所在的整条记录,如红色部分.(类似hive中: row_number() over(partition by)) sel ...
- MySQL分组排序(取第一或最后)
MySQL分组排序(取第一或最后) 方法一:速度非常慢,跑了30分钟 SELECT custid, apply_date, rejectrule FROM ( SELECT *, IF ( , ) A ...
- mysql 分组排序前n + 长表转宽表
MySQL数据库优化的八种方式(经典必看) 建表 CREATE TABLE if not EXISTS `bb` ( `id` int not null primary key auto_increm ...
- mysql分组排序加序号(不用存储过程,就简简单单sql语句哦)
做前端好长时间了,好久没动sql了.在追一个喜欢的女孩,做测试的,有这么个需求求助与本屌丝,机会难得,开始折腾起来,配置mysql,建库,建表.... 一 建表 CREATE TABLE `my_te ...
- 关于oracle分组排序取值的问题
按照 某字段分组 某字段排序 然后取出该分组中排第1条数据(每组只取一条) SELECT* FROM( SELECT a.*,row_number() over(partition by ORI_FE ...
- Oracle 中分组排序取值的问题
整理一下排序: 建表语句:create table EXAM( name VARCHAR2(32), subject VARCHAR2(32), score INTEGER)数据:IN ...
- [转] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit
前言: 同事的业务场景是,按照cid.author分组,再按照id倒叙,取出前2条记录出来. oracle里面可以通过row_number() OVER (PARTITIO ...
- mySql分组排序
mysql 排序学习---mysql 1.建表语句 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varc ...
- mysql 分组后取每个组内最新的一条数据
首先,将按条件查询并排序的结果查询出来. mysql order by accepttime desc; +---------------------+------+-----+ | acceptti ...
随机推荐
- 雾霾天出行,如何精确避开“雷区”?2016 SODA数据侠十强
(2016年参加了上海 SODA 竞赛,进入前十,最终获得上海市的两个奖项.) ▍跟踪雾霾,仅靠零星的监测点数据怎么行? 如果雾霾短期内没有办法彻底根治,我们可以做什么,把环境污染物对人的影响尽可能降 ...
- catch data
抓取一些有反爬机制的website 喜马拉雅 每天都有-动态class 通过网络请求
- Python工资高还是Java?
说起来,随着人工智能和大数据逐渐进入人们的眼中,越来越多的人看到互联网未来大好发展趋势,而想要学习一门技术来进入其中,以期分一杯羹.但是,作为人工智能和大数据的重要编程语言,Python和Java,该 ...
- Navigation包中的move_base和amcl实现自动驾驶
安装功能包: 1.安装导航定位包navigation $ sudo apt-get install ros-indigo-navigation 2.由于导航包在/cmd_val下发布的移动数据加速度会 ...
- Python实战:网络爬虫都能干什么?
整站下载器:siteSucker https://blog.csdn.net/l_215851356/article/details/54377582 http://python.jobbole.co ...
- 【新特性】JDK1.5
一.自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中. 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用i ...
- Docker应用
1.tomcat容器创建 docker run -d --name Jdd_tomcat -p 8081:8080 tomcat [root@localhost etc]# docker run - ...
- zookeeper之 zkServer.sh命令、zkCli.sh命令、四字命令
一.zkServer.sh 1.查看 zkServer.sh 帮助信息[root@bigdata05 bin]# ./zkServer.sh helpZooKeeper JMX enabled by ...
- mysql57 centos7 使用
####### yum repository install #######mysql yum repo http://repo.mysql.com/wget http://repo.mysql.co ...
- Python自学:第二章 Python之禅
>>print import <Python之禅>,提姆·彼得斯著 美胜于丑. 显式优于隐式. 简单胜于复杂. 复杂总比复杂好. 平的比嵌套的好. 稀疏胜于稠密. 可读性计数. ...