- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个显示最早时间戳的列,现在我想创建另一个显示该时间戳来源的列。这就是我正在使用的,但当原始数据中的时间戳值之一为 NULL 时,它不起作用。
SELECT LEAST (timestamp_1, timestamp_2, timestamp_3)
,CASE WHEN timestamp_1 is null AND timestamp_2 is null AND timestamp_3 is null THEN NULL
ELSE CASE WHEN timestamp_1 <= timestamp_2 AND timestamp_1 <= timestamp_3 THEN 'timestamp_1'
WHEN timestamp_2 <= timestamp_3 THEN 'timestamp_2'
ELSE 'timestamp_3' END
END timestamp_source
FROM (
SELECT timestamp_1
,timestamp_2
,timestamp_3
,timestamp_4
FROM time
)
我希望结果看起来像这样:
timestamp_1 | timestamp_2 | timestamp_3 | timestamp_4 | MIN_time | MIN_source
8/5/18 7:00 | 8/5/18 5:00 | NULL | 8/5/18 9:00 | 8/5/18 5:00 | timestamp_2
9/5/18 9:00 | 8/5/18 7:00 | 8/5/18 3:00 | NULL | 8/5/18 3:00 | timestamp_3
是否有更直接的方法来实现结果?
最佳答案
这很痛苦。一种很好概括的方法是使用聚合。性能不如使用 CASE
并假定行具有唯一 id:
SELECT DISTINCT id, MIN(ts) OVER (PARTITION BY id) as min_ts,
FIRST_VALUE(which) OVER (PARTITION BY id ORDER BY ts)
FROM ((SELECT id, 'timestamp_1' as which, timestamp_1 as ts
FROM time
) UNION ALL
(SELECT id, 'timestamp_2' as which, timestamp_2 as ts
FROM time
) UNION ALL
(SELECT id, 'timestamp_3' as which, timestamp_3 as ts
FROM time
) UNION ALL
(SELECT id, 'timestamp_4' as which, timestamp_4 as ts
FROM time
)
) t;
我不喜欢 select distinct
但 Redshift 不支持 first_value()
作为聚合函数。
另一种方法是使用一些 future 值来避免 NULL
:
select nullif(least(timestamp_1, timestamp_2, timestamp_3, timestamp_4), '9999-01-01') as least_ts,
(case when timestamp_1 = least(timestamp_1, timestamp_2, timestamp_3, timestamp_4) then 'timestamp_1'
when timestamp_2 = least(timestamp_1, timestamp_2, timestamp_3, timestamp_4) then 'timestamp_2'
when timestamp_3 = least(timestamp_1, timestamp_2, timestamp_3, timestamp_4) then 'timestamp_3'
else 'timestamp_4'
end) as which
from (select coalesce(timestamp_1, '9999-01-01') as timestamp_1,
coalesce(timestamp_2, '9999-01-01') as timestamp_2,
coalesce(timestamp_3, '9999-01-01') as timestamp_3,
coalesce(timestamp_4, '9999-01-01') as timestamp_4
from time
) t;
注意:我假设您使用的是 Redshift。 Postgres 有更简单的方法来做到这一点。
关于sql - LEAST/GREATEST 列的源标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50567686/
C++ 标准在 [conv.integral/2] 中说,关于整数转换为无符号: If the destination type is unsigned, the resulting value is
我有一个包含 62 列的数据框,这些列大部分为空。一些记录有多个非空值的列,其他的只有一个非空值。我想知道是否有一种方法可以使用 .dropna 或其他策略返回最少行数,每列至少有一个非空值。 一个简
给定以下二维点: 213 106.8 214 189 214 293.4 213 324 223 414 我想找到穿过它们的最小二乘垂直轴线的方程。我的计划是得到一个线方程,这样我就可以测试后续点到最
我发布此问题是因为,我的代码没有在正确的位置停止迭代。谁能让我确定哪里出了问题? 一切工作正常(我一直认为这是现实中的错误。) 问题: 1)在每次迭代中,我都在最小化不幸的是,它没有正确地最小化(非常
所以我有一个看起来像这样的数据集: a b c 23 34 Falcons 14 9 Hawks 2 18 Eagles 3 21 Eagles 22 8 Falc
我担任 IDL 程序员已有一段时间,并希望过渡到 Python。我发现 Python 中存在 MPFIT 的 IDL 版本。但是,我正在寻找 Python 中的 MPFITFUN 版本(http://
任何长期使用 Python 的人都会被以下问题困扰(或撕成碎片): def foo(a=[]): a.append(5) return a Python 新手会期望这个不带参数调用的函
我正在阅读一本关于 C++ AMP 的书,但并不真正理解其中的一些术语: Always choose your tile size so that the number of threads in t
我正在触发器内使用循环来更新 MySQL 数据库中的层次结构关系。表是INNO。 我拥有的是: SET vDateCounter = NEW.DateTime; 问题是这只能在一半的时间内起作用。如果
我想创建一个 MySQL 查询来查找子网表中存在的最长匹配(给定 IP 地址的四点格式)。 最终,我想创建一个 LEFT JOIN这将显示一个表中的每个四点 IP 地址及其在另一个表中的最长匹配项。我
我创建了一个显示最早时间戳的列,现在我想创建另一个显示该时间戳来源的列。这就是我正在使用的,但当原始数据中的时间戳值之一为 NULL 时,它不起作用。 SELECT LEAST (timestamp_
我有 5 列日期(col1、col2、col3、col4、col5),其中一些为空或为 null。我需要从所有这些列中找到一个最短日期。 我正在使用“least”函数,它工作正常,但如果我有一列包含日
我正在尝试查找重复项并选择表格中具有最小值组合的结果。 到目前为止,我只能使用 MIN() 选择列中具有最低值的结果。我认为将 MIN 替换为 LEAST 并更改列会很容易。 这是一个布局: CRE
我有一张价格表,我想在该表上创建一个价格最低的 View 。 例如,我的表格有 price1、price2 列。 我想我可以用 LEAST() 来完成 例如从价目表中选择最少的(price1,pric
任何长期使用 Python 的人都会被以下问题困扰(或撕成碎片): def foo(a=[]): a.append(5) return a Python 新手会期望这个不带参数调用的函
任何修补 Python 时间足够长的人都被以下问题咬伤(或撕成碎片): def foo(a=[]): a.append(5) return a Python 新手会期望这个函数总是返回
任何长期使用 Python 的人都会被以下问题困扰(或撕成碎片): def foo(a=[]): a.append(5) return a Python 新手会期望这个不带参数调用的函
任何长期使用 Python 的人都会被以下问题困扰(或撕成碎片): def foo(a=[]): a.append(5) return a Python 新手会期望这个不带参数调用的函
任何长期使用 Python 的人都会被以下问题困扰(或撕成碎片): def foo(a=[]): a.append(5) return a Python 新手会期望这个不带参数调用的函
任何长期使用 Python 的人都会被以下问题困扰(或撕成碎片): def foo(a=[]): a.append(5) return a Python 新手会期望这个不带参数调用的函
我是一名优秀的程序员,十分优秀!