[英]PostgreSQL getting row where one column is min
今天我的第二個PostgreSQL問題...我確定解決方案很簡單,但是我只是不知道該怎么做。
我工作的表:
CREATE TABLE separabilities
(
data_bands TEXT[] NOT NULL,
thematic_class1 TEXT NOT NULL,
thematic_class2 TEXT NOT NULL,
jm_dist DOUBLE PRECISION NOT NULL
)
我的查詢:
select sep.data_bands,
sum(sep.jm_dist)/count(sep.data_bands) as avarage_jm_dist,
min(jm_dist)
from separabilities as sep
group by sep.data_bands
order by avarage_jm_dist
我得到的是:
我需要的:
另外兩個列,包含與最小距離相對應的主題類。
像這樣:data_bands-avarage_jm_dist-min-thematic_class1-thematic_class2
這樣的事情。
SELECT *
FROM (SELECT Row_number()OVER(partition BY data_bands ORDER BY jm_dist) AS RN,
data_bands,
thematic_class1,
thematic_class2
Avg(sep.jm_dist)OVER(partition BY data_bands) as avarage_jm_dist
jm_dist
FROM separabilities) A
WHERE rn = 1
或者您需要將結果連接到主表以獲取最小jm_dist
和data_bands
jm_dist
和data_bands
SELECT *
FROM separabilities A
INNER JOIN (SELECT sep.data_bands,
Sum(sep.jm_dist) / Count(sep.data_bands) AS avarage_jm_dist
Min(jm_dist) AS jm_dist
FROM separabilities AS sep
GROUP BY sep.data_bands) B
ON A.data_bands = B.data_bands
AND A.jm_dist = B.jm_dist
ORDER BY avarage_jm_dist
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.