簡體   English   中英

PostgreSQL獲取行,其中至少一列

[英]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_distdata_bands jm_distdata_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM