【发布时间】:2020-12-13 11:28:33
【问题描述】:
我有一张这样的桌子:
|uniqueID|scandatetime |scanfacilityname|
+--------+-------------------+----------------+
|12345678|01-01-2020 13:45:12|BALTIMORE |
|12345678|01-02-2020 22:45:12|BALTIMORE |
|12345678|01-04-2020 10:15:12|PHILADELPHIA |
|12345678|01-05-2020 08:45:12| |
我想返回一整行,其中包含 uniqueID、scandatetime 和最新的 scanfacilityname(即最大 scandatetime,其中 scanfacilityname 不为空)。我尝试了以下查询:
SELECT
"uniqueID"
, "max"(CAST("scandatetime" AS timestamp)) "timestamp"
, COALESCE("scanfacilityname") "scanfacilityname"
FROM
iv_scans_new.scan_data
WHERE (("partition_0" = '2020') AND ("partition_1" IN ('06', '07', '08'))) and scanfacilityname is not null
group by 1, 3
;
但我不确定这是否正确/是否需要合并。
【问题讨论】:
-
不相关,但是:
COALESCE("scanfacilityname")可以简化为"scanfacilityname" -
您使用的是哪种 DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加tag。 Why should I tag my DBMS
-
这是 Athena/prestodb。
标签: sql datetime greatest-n-per-group presto amazon-athena