Postgresql 如何通过单元格id按日期(时间戳)查找最大值
我试图在第三列的上下文中,以天为单位在日期范围内查找列的最大值。我是个SQL新手,所以放松点 基本上-最大值,按天,按单元格id 每个天气单元ID都有每天每小时的数据。下面是示例 注意:这是多个日期 我当前的PostgreSQL表大致如下所示:Postgresql 如何通过单元格id按日期(时间戳)查找最大值,postgresql,Postgresql,我试图在第三列的上下文中,以天为单位在日期范围内查找列的最大值。我是个SQL新手,所以放松点 基本上-最大值,按天,按单元格id 每个天气单元ID都有每天每小时的数据。下面是示例 注意:这是多个日期 我当前的PostgreSQL表大致如下所示: +-----------------+------------------+------------+ | Weather_Cell_ID | Dates | Wind_Speed | +-----------------+----
+-----------------+------------------+------------+
| Weather_Cell_ID | Dates | Wind_Speed |
+-----------------+------------------+------------+
| 0001 | 2019-01-21 01:00 | 4.6 |
| 0001 | 2019-01-21 02:00 | 2.4 |
| 0001 | 2019-01-21 04:00 | 8.5 |
| 0001 | 2019-01-22 10:00 | 6.2 |
| 0001 | 2019-01-21 14:00 | 14.8 |
| 0002 | 2019-01-21 01:00 | 3.5 |
| 0002 | 2019-01-21 05:00 | 9.6 |
| 0002 | 2019-01-22 06:00 | 4.8 |
| 0002 | 2019-01-21 16:00 | 12.2 |
| 0002 | 2019-01-21 08:00 | 4.6 |
| 0003 | 2019-01-21 03:00 | 4.9 |
+-----------------+------------------+------------+
我当前的代码如下所示:
select weather_cell_id,
date_trunc('day', dates) as dates,
max(windspeed) as maxwindspeed
from view_6day_mat
GROUP BY weather_cell_id, view_6day_mat.dates
order by weather_cell_id
但是,这将生成与HH:MI设置为00:00时基本相同的表
我希望看到的输出是:
+-----------------+------------+------------+
| Weather_Cell_ID | Dates | Wind_Speed |
+-----------------+------------+------------+
| 0001 | 2019-01-21 | 14.8 |
| 0001 | 2019-01-22 | 6.2 |
| 0002 | 2019-01-21 | 12.2 |
| 0002 | 2019-01-22 | 4.8 |
| 0003 | 2019-01-21 | 4.9 |
+-----------------+------------+------------+
那很好用。非常感谢。我会把它标记为正确的。你能解释它为什么工作/它在做什么吗?“dates::date as dates\u date”在做什么?@anakaine在PostgreSQL::中将一种类型的值转换为另一种类型(如果可以转换)。这与SQL标准转换相同,因为在本例中,dates::date将时间戳类型的值转换为日期类型。换句话说,它删除了时间,只留下日期部分。例如:选择当前时间戳、当前时间戳::日期、当前时间戳作为日期;然后,您不仅可以按表的列分组数据,还可以按select子句中的表达式分组数据。
select
weather_cell_id,
dates::date as dates_date,
max(windspeed) as maxwindspeed
from view_6day_mat
GROUP BY weather_cell_id, dates_date
order by weather_cell_id