根据id和状态分组取组内数据条数大于1的数据,再根据时间排序取最小时间的那一条数据
时间: 2024-04-30 11:19:25 浏览: 13
可以使用如下 SQL 语句实现:
```sql
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY id, status ORDER BY time) AS rn
FROM your_table
GROUP BY id, status
HAVING COUNT(*) > 1
) t
WHERE t.rn = 1
ORDER BY t.time;
```
解释一下:
首先使用 `GROUP BY` 和 `HAVING` 子句,对 `id` 和 `status` 进行分组,并过滤出组内数据条数大于 1 的数据。然后在子查询中,使用 `ROW_NUMBER()` 窗口函数给每个分组内的数据按照时间排序并编号。最后,外部查询根据编号为 1 的数据条目,也就是分组内最小时间的那一条数据进行排序输出。
需要注意的是,如果存在多条分组内时间相同的数据,那么输出结果可能不唯一。如果需要取出所有分组内时间最小的数据,可以将 `WHERE` 子句改为 `t.rn <= 1`。
相关问题
sql 同一个id多条数据根据时间取最近一条
可以使用以下 SQL 语句来查询同一个 id 下的最近一条数据:
SELECT * FROM your_table WHERE id = your_id ORDER BY time DESC LIMIT 1;
其中,your_table 是你的数据表名称,your_id 是要查询的 id 值,time 是记录时间的列名。这条 SQL 语句会根据时间降序排序,取第一条记录,也就是最近的一条数据。
db2 分组排序取第一条数据
可以使用ROW_NUMBER()函数和PARTITION BY子句来实现分组排序取第一条数据。
例如,假设有一个名为“orders”的表,其中包含订单数据,可以按照以下方式检索每个客户的最新订单:
```
SELECT customer_id, order_date, order_amount
FROM (
SELECT customer_id, order_date, order_amount,
ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date DESC) AS rn
FROM orders
) AS t
WHERE t.rn = 1;
```
在上面的查询中,ROW_NUMBER()函数为每个客户的订单分配一个行号,按照订单日期降序排序。然后,从这个子查询中选择行号为1的记录,即每个客户的最新订单。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)