Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
SQL查询以查找每个不同日期的最大值和最小值_Sql_Postgresql - Fatal编程技术网

SQL查询以查找每个不同日期的最大值和最小值

SQL查询以查找每个不同日期的最大值和最小值,sql,postgresql,Sql,Postgresql,我有下表: id value truncated_day just_yyyy_mm_dd 1167 300 7/1/11 0:00 7/1/11 1167 301 7/1/11 0:00 7/1/11 1167 303 7/1/11 0:00 7/1/11 1167 308 7/1/11 0:00 7/1/11 1167 312 7/2/11 0:00 7/2/11 1167 316 7/2/11 0:00 7/2/11 1167 318 7/

我有下表:

id value truncated_day just_yyyy_mm_dd 1167 300 7/1/11 0:00 7/1/11 1167 301 7/1/11 0:00 7/1/11 1167 303 7/1/11 0:00 7/1/11 1167 308 7/1/11 0:00 7/1/11 1167 312 7/2/11 0:00 7/2/11 1167 316 7/2/11 0:00 7/2/11 1167 318 7/2/11 0:00 7/2/11 1167 330 7/2/11 0:00 7/2/11 1700 0 7/1/11 0:00 7/1/11 1700 10 7/1/11 0:00 7/1/11 1700 21 7/1/11 0:00 7/1/11 1700 33 7/1/11 0:00 7/1/11 1700 34 7/2/11 0:00 7/2/11 1700 35 7/2/11 0:00 7/2/11 1700 40 7/2/11 0:00 7/2/11 我基本上希望查询返回:

id min max truncated_day just_yyyy_mm_dd 1167 300 308 7/1/11 0:00 7/1/11 1167 312 330 7/2/11 0:00 7/2/11 1700 0 33 7/1/11 0:00 7/1/11 1700 34 40 7/2/11 0:00 7/2/11 id最小值最大值截短日刚刚\u yyyy\u mm\u dd 1167 300 308 7/1/11 0:00 7/1/11 1167 312 330 7/2/11 0:00 7/2/11 1700 0 33 7/1/11 0:00 7/1/11 1700 34 40 7/2/11 0:00 7/2/11 你能帮我解答这个问题吗? 提前非常感谢!
N

在“订购人”之前,您需要一个“分组人”。基本上,您需要按前3个字段分组。

试试这个。注:添加了GROUP BY。如果需要,您可以将just_yyy_mm_dd内容添加回

select id, 
date_trunc('day', timestamp_utc) as truncated_day, 
max(value) as maxvalue,
min(value) as minvalue
from TABLE
GROUP BY id, date_trunc('day', timestamp_utc)
order by device_id, truncated_day

您需要将您的
订购人
更改为
分组人
。事实上,您可能同时需要:

select device_id, date_trunc('day', timestamp_utc) as truncated_day, 
           substring(cast(date_trunc('day', timestamp_utc) as text) from 1 for 10) as just_yyyy_mm_dd,
           max(value) as maxvalue,
            min(value) as minvalue
from TABLE
group by device_id, date_trunc('day', timestamp_utc)
order by device_id, truncated_day

我很好奇,按设备id分组、截短的一天是否有效。SQL编译器是否在just_yyy_mm_dd列上生成错误?它不需要生成错误,但它可能无法识别该表达式仅存在于聚合列上。

对于格式很抱歉:初始表:d值被截断\u day just\u yyy\u mm\u dd 1167300 7/1/11 0:00 7/1/11 1167301 7/1/11 0:00 7/1/11 1167303 7/1/11 0:00 7/1/11 1167308 7/1/11 0:00 7/1/11 11673127/2/11 0:00 7/11 1167316 7/11 0:00 7/2/11 11677/110:00 7/2/11 11673307/2/11 0:00 7/2/11 17000 7/1/11 1700 10 7/1/11 1700 21 7/1/11 0:00 7/1/11 1700 33 7/1/11 0:00 7/11 1700 34 7/2/11 0:00 7/2/11 1700 35 7/2/11 0:00 7/2/11 1700 40 7/2/11 0:00 7/2/11您使用的是什么BMS?顺便问一下,这是postgres吗?最好指定您正在使用的RDBMS!为了只获得_yyy_mm_dd,您可以尝试使用类似于to_char()的东西。我想这会让你的生活更轻松。请看是的,它是postgres(很抱歉,我忘了指定它)我会让你知道它是否工作,只要我得到一些东西,查询仍在运行。非常感谢你!
select id, min(value) as 'minvalue', max(value) as 'maxvalue', truncated_day, just_yy_mm_dd
from the_table
group by truncated_day, id, just_yy_mm_dd
select id, min(value) as 'minvalue', max(value) as 'maxvalue', truncated_day, just_yy_mm_dd
from the_table
group by truncated_day, id, just_yy_mm_dd