一个表有类型,日期,价格,根据类型进行分组,筛选当前分组里日期早于当前日期且最大的日期,写一道sql返回类型,日期,价格 mysql
时间: 2023-07-27 12:30:54 浏览: 184
好的,根据你的要求,可以使用以下SQL语句来实现:
```
SELECT t1.type, t1.date, t1.price
FROM table_name t1
INNER JOIN (
SELECT type, MAX(date) AS max_date
FROM table_name
WHERE date < CURDATE()
GROUP BY type
) t2 ON t1.type = t2.type AND t1.date = t2.max_date;
```
以上SQL语句首先使用子查询获取每个类型的最大日期,然后使用INNER JOIN将原表和子查询结果连接起来,筛选出当前分组里日期早于当前日期且最大的日期对应的记录。
需要替换的部分:
- `table_name`:需要替换为你的表名。
- `type`、`date`、`price`:需要替换为你的列名。
另外,这里假设你使用的是MySQL数据库。
相关问题
写个sql,对表中数据根据类型字段进行分组,然后每个分组里取日期字段小于当前日期,并且最接近当前日期的数据 mysql
可以使用以下 SQL 语句来实现:
```mysql
SELECT t1.*
FROM your_table t1
INNER JOIN (
SELECT type_column, MAX(date_column) AS max_date
FROM your_table
WHERE date_column < CURDATE()
GROUP BY type_column
) t2 ON t1.type_column = t2.type_column AND t1.date_column = t2.max_date
```
其中,`your_table` 是你要查询的表的名称,`type_column` 是你要根据哪个类型字段进行分组的字段名称,`date_column` 是你要根据哪个日期字段进行筛选的字段名称。
这个 SQL 语句会首先根据 `type_column` 进行分组,然后在每个分组里面找到小于当前日期的最接近日期的数据。最后,返回符合条件的所有字段和数据。
写个sql,对表中数据根据某个字段进行分组,然后每个分组里去日期字段小于当前日期,并且最接近当前日期的数据 mysql
可以使用以下 SQL 语句来实现:
```mysql
SELECT *
FROM your_table t1
WHERE date_column = (
SELECT MAX(date_column)
FROM your_table t2
WHERE t1.group_column = t2.group_column
AND t2.date_column < CURDATE()
)
```
其中,`your_table` 是你要查询的表的名称,`group_column` 是你要根据哪个字段进行分组的字段名称,`date_column` 是你要根据哪个日期字段进行筛选的字段名称。
这个 SQL 语句会首先根据 `group_column` 进行分组,然后在每个分组里面找到小于当前日期的最接近日期的数据。最后,返回符合条件的所有字段和数据。
阅读全文