• 查各个用户下单最早的一条记录
  • 查各个用户下单最早的前两条记录
  • 查各个用户第二次下单的记录

一、建表填数据:

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 分组排序取最值的更多相关文章

  1. mysql分组排序取最大值所在行,类似hive中row_number() over partition by

    如下图, 计划实现 :按照 parent_code 分组, 取组中code最大值所在的整条记录,如红色部分.(类似hive中: row_number() over(partition by)) sel ...

  2. MySQL分组排序(取第一或最后)

    MySQL分组排序(取第一或最后) 方法一:速度非常慢,跑了30分钟 SELECT custid, apply_date, rejectrule FROM ( SELECT *, IF ( , ) A ...

  3. mysql 分组排序前n + 长表转宽表

    MySQL数据库优化的八种方式(经典必看) 建表 CREATE TABLE if not EXISTS `bb` ( `id` int not null primary key auto_increm ...

  4. mysql分组排序加序号(不用存储过程,就简简单单sql语句哦)

    做前端好长时间了,好久没动sql了.在追一个喜欢的女孩,做测试的,有这么个需求求助与本屌丝,机会难得,开始折腾起来,配置mysql,建库,建表.... 一 建表 CREATE TABLE `my_te ...

  5. 关于oracle分组排序取值的问题

    按照 某字段分组 某字段排序 然后取出该分组中排第1条数据(每组只取一条) SELECT* FROM( SELECT a.*,row_number() over(partition by ORI_FE ...

  6. Oracle 中分组排序取值的问题

    整理一下排序: 建表语句:create table EXAM(  name    VARCHAR2(32),  subject VARCHAR2(32),  score   INTEGER)数据:IN ...

  7. [转] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit

    前言:        同事的业务场景是,按照cid.author分组,再按照id倒叙,取出前2条记录出来.        oracle里面可以通过row_number() OVER (PARTITIO ...

  8. mySql分组排序

    mysql 排序学习---mysql 1.建表语句 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varc ...

  9. mysql 分组后取每个组内最新的一条数据

    首先,将按条件查询并排序的结果查询出来. mysql order by accepttime desc; +---------------------+------+-----+ | acceptti ...

随机推荐

  1. 雾霾天出行,如何精确避开“雷区”?2016 SODA数据侠十强

    (2016年参加了上海 SODA 竞赛,进入前十,最终获得上海市的两个奖项.) ▍跟踪雾霾,仅靠零星的监测点数据怎么行? 如果雾霾短期内没有办法彻底根治,我们可以做什么,把环境污染物对人的影响尽可能降 ...

  2. catch data

    抓取一些有反爬机制的website 喜马拉雅   每天都有-动态class 通过网络请求

  3. Python工资高还是Java?

    说起来,随着人工智能和大数据逐渐进入人们的眼中,越来越多的人看到互联网未来大好发展趋势,而想要学习一门技术来进入其中,以期分一杯羹.但是,作为人工智能和大数据的重要编程语言,Python和Java,该 ...

  4. Navigation包中的move_base和amcl实现自动驾驶

    安装功能包: 1.安装导航定位包navigation $ sudo apt-get install ros-indigo-navigation 2.由于导航包在/cmd_val下发布的移动数据加速度会 ...

  5. Python实战:网络爬虫都能干什么?

    整站下载器:siteSucker https://blog.csdn.net/l_215851356/article/details/54377582 http://python.jobbole.co ...

  6. 【新特性】JDK1.5

    一.自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中. 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用i ...

  7. Docker应用

    1.tomcat容器创建 docker run -d --name Jdd_tomcat  -p 8081:8080 tomcat [root@localhost etc]# docker run - ...

  8. zookeeper之 zkServer.sh命令、zkCli.sh命令、四字命令

    一.zkServer.sh 1.查看 zkServer.sh 帮助信息[root@bigdata05 bin]# ./zkServer.sh helpZooKeeper JMX enabled by ...

  9. mysql57 centos7 使用

    ####### yum repository install #######mysql yum repo http://repo.mysql.com/wget http://repo.mysql.co ...

  10. Python自学:第二章 Python之禅

    >>print import <Python之禅>,提姆·彼得斯著 美胜于丑. 显式优于隐式. 简单胜于复杂. 复杂总比复杂好. 平的比嵌套的好. 稀疏胜于稠密. 可读性计数. ...