內創建條件布爾列我有以下SQL代碼:的PostgreSQL如何查詢
SELECT sensor_id, reader_id, rssi, date_time, time_diff_lead, reader_diff
FROM
(
SELECT doc->>'sensorId' as sensor_id, doc->>'readerId' as reader_id, (doc->>'rssi')::int as rssi, created_at as date_time,
EXTRACT(EPOCH FROM lead(created_at) OVER w - created_at) as time_diff_lead,
(lead(doc->>'readerId') OVER w)::int - (doc->>'readerId')::int as reader_diff
FROM public.sensor_data
WINDOW w AS (PARTITION BY doc->>'sensorId' ORDER BY created_at)
) as x
WHERE rssi > 380 OR time_diff_lead > 18.0 AND reader_diff = 0
ORDER BY sensor_id, date_time
WHERE子句定義,我想用它來創建一個布爾值列的條件。
所有這些數據來自一個jsonB列的表和效率(我認爲...)我需要通過正確的鍵將該列添加到該表。
該表將至少每30秒更新一次新記錄。上面的查詢將比這個運行次數少。所以這個列中會有空值。在一般意義上,這將如何影響對該表的查詢? (數據科學新手)
我正在啓動並試圖爲我們的數據收集打下基礎(並且他們讓我這樣做:P),所以請撕開我的代碼並指出我更好的方法!
既然您提到了基金會,請參閱https://en.wikipedia.org/wiki/Database_normalization。除了使用jsonb而不是普通列以外,如果您關心的是正常表單,那麼您提到的其他bool列是非啓動器。 –
{sensor_id,reader_id}確實看起來像這張表的自然鍵(的一部分),所以它們應該被保留在json-blob之外。 #2nf – joop
@DanielVérité非常感謝,正是我想聽到的東西的類型:) 我沒有製作數據庫或表格,它是一個混亂,需要清理。目前,json沒有時間戳記密鑰,所以我使用created_at列只是爲了獲取邏輯(將有一個時間戳記密鑰)。 我還使用了一個JOIN與sensor_id和reader_id(來自public.sensor_data)在一個沒有jsonB(other_schema.other_table)表的普通列上。 我們使用jsonB的原因是我們所有的數據都是從源代碼構建的JSON對象。你對jsonB的看法和加入正常的列 –