我想选择最大值及其对应的发生时间和小时数,以名称区分DISTINCT
我的时间是str数据类型。我们是否在此使用自我内部联接以这样做?
我的桌子是:
name high time
-------|-----|---------------------------
name 1 | 12 | 2020-05-25 12:01:00-04:00
name 1 | 14 | 2020-05-25 12:02:00-04:00
name 1 | 16 | 2020-05-25 12:03:00-04:00
name 2 | 12 | 2020-05-25 12:01:00-04:00
name 2 | 11 | 2020-05-25 12:02:00-04:00
name 2 | 10 | 2020-05-25 12:03:00-04:00
name 3 | 21 | 2020-05-25 12:01:00-04:00
name 3 | 23 | 2020-05-25 12:02:00-04:00
name 3 | 22 | 2020-05-25 12:03:00-04:00
我想要的结果是
name hour datetime max_high
--------|-----|---------------------------|--------
name 1 | 12 | 2020-05-25 12:03:00-04:00 | 16
name 2 | 12 | 2020-05-25 12:01:00-04:00 | 12
name 3 | 12 | 2020-05-25 12:02:00-04:00 | 23
非常感谢!
ROW_NUMBER
将是前往这里的一种方式:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTTITON BY name ORDER BY high DESC) rn
FROM yourTable
)
SELECT
name,
HOUR(CAST(datetime AS timestamp)) AS hour,
datetime,
high AS max_high
FROM cte
WHERE rn = 1
ORDER BY name;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句