Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何通过单元格id按日期(时间戳)查找最大值_Postgresql - Fatal编程技术网

Postgresql 如何通过单元格id按日期(时间戳)查找最大值

Postgresql 如何通过单元格id按日期(时间戳)查找最大值,postgresql,Postgresql,我试图在第三列的上下文中,以天为单位在日期范围内查找列的最大值。我是个SQL新手,所以放松点 基本上-最大值,按天,按单元格id 每个天气单元ID都有每天每小时的数据。下面是示例 注意:这是多个日期 我当前的PostgreSQL表大致如下所示: +-----------------+------------------+------------+ | Weather_Cell_ID | Dates | Wind_Speed | +-----------------+----

我试图在第三列的上下文中,以天为单位在日期范围内查找列的最大值。我是个SQL新手,所以放松点

基本上-最大值,按天,按单元格id

每个天气单元ID都有每天每小时的数据。下面是示例

注意:这是多个日期

我当前的PostgreSQL表大致如下所示:

+-----------------+------------------+------------+
| 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