gpt4 book ai didi

sql - PostgreSQL 查询 : selecting devices and their one parameter according to devices' another parameter's value

转载 作者:行者123 更新时间:2023-11-29 13:09:28 24 4
gpt4 key购买 nike

我有一个名为Configuration 的表。表格的第一列是deviceId,第二列是parameter,第三列是value

表中有很多设备,每个设备只有一个设备ID(第1列);每个设备都有许多配置参数(第 2 列),例如。 VERDATE等,所有设备的配置参数相同;不同设备的参数值(第 3 列)可能相同或不同。

我想为那些DATE值大于'2019-05-01'VER >。

如何在一个 PostgreSQL 查询中实现这一点?

最佳答案

一种选择是使用 COUNT 作为分析函数来识别匹配的设备:

WITH cte AS (
SELECT deviceId, parameter, value,
COUNT(*) FILTER (WHERE parameter = 'DATE' AND value > '2019-05-01') OVER
(PARTITION BY deviceId) cnt
FROM yourTable
)

SELECT parameter, value
FROM cte
WHERE parameter = 'VER' AND cnt > 0;

Demo

另一种方法是通过现有查询:

SELECT parameter, value
FROM yourTable t1
WHERE
parameter = 'VER' AND
EXISTS (SELECT 1 FROM yourTable t2
WHERE t1.deviceId = t2.deviceId AND
t2.parameter = 'DATE' AND
t2.value > '2019-05-01');

关于sql - PostgreSQL 查询 : selecting devices and their one parameter according to devices' another parameter's value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56880620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com