簡體   English   中英

PostgreSQL中的SQL MIN(值)匹配行

[英]SQL MIN(value) matching row in PostgreSQL

我有以下表格:

表A:

 ID          ID NAME      PRICE         CODE      
 00001          B         1000          1       
 00002          A         2000          1       
 00003          C         3000          1       

這是我使用的SQL:

Select Min (ID),
       Min (ID NAME),
       Sum(PRICE)
From A
GROUP BY CODE

這是我得到的:

ID         ID NAME     PRICE         
00001       A          6000   

如您所見,ID NAME與最小行值不匹配。 我需要他們配合。

我想查詢返回以下內容

ID         ID NAME     PRICE         
00001       B          6000  

我可以使用哪種SQL來獲得該結果?

如果需要一行,請使用limitfetch first 1 row only

select a.*
from a
order by a.price asc
fetch first 1 row only;

如果由於某種原因,您想要所有價格的sum() ,則可以使用窗口函數:

select a.*, sum(a.price) over () as sum_prices
from a
order by a.price asc
fetch first 1 row only;

您可以使用row_number()函數:

select min(id), max(case when seq = 1 then id_name end) as id_name, sum(price) as price, code
from (select t.*, row_number() over (partition by code order by id) seq
      from table t
     ) t
group by code;

您也可以使用子查詢

select t1.*,t2.* from
(select ID,Name from t where ID= (select min(ID) from t)
) as t1
cross join (select sum(Price) as total from t) as t2

https://dbfiddle.uk/?rdbms=postgres_10&fiddle=a496232b552390a641c0e5c0fae791d1

id  name    total
1    B      6000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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