簡體   English   中英

PostgreSQL - 從連接表中選擇聚合列並使用它來求和

[英]PostgreSQL - select aggregated column from joined table and use it to sum

我想選擇從三個表聚合的字段並為 post、 postIdcalculatedRatecount輸出三個字段,我試過但沒有工作

目前我有這個示例查詢只是獲取countpostId

select
    mr.count,
    mr.postId
from
    (
        select
            "m"."postId" as postId,
            count("m"."postId") as count
        from
            "Rating" r
        left join "Messenger" m on
            "r"."id" = "m"."ratingId"
        group by
            "m"."postId"
    ) mr
group by
    mr.postId,
    mr.count

Messenger(帖子和評分的映射表)

ID 郵編 評級ID
1 1 4
2 1 5
3 2 6

郵政

ID 標題
1 一貼
2 貼二

評分

ID 一種
4 5.0 5.0
5 3.0 3.0
6 2.0 4.0

預期結果(calculatedRate = 同一帖子 id 內的平均值((rating.a + rating.b)/2))

ID 郵編 計算率 數數
1 1 4.0 2
2 2 3.0 1

我不確定我得到了你要找的東西,但如果你想要每個MESSENGER.IDCOUNTCALCULATEDRATE ,那么下面應該做

SELECT 
MESSENGER.ID,
POST.ID POSTID, 
COUNT(*) NR_RATINGS,
(RATING.A + RATING.B)/2 CALCULATEDRATE
FROM 
RATING JOIN MESSENGER ON RATING.ID = MESSENGER.RATINGID
JOIN POST ON MESSENGER.POSTID=POST.ID

編輯:如果您希望通過郵寄獲得平均值,您可以通過以下方式實現

SELECT 
POST.ID POSTID, 
COUNT(*) NR_RATINGS,
avg((RATING.A + RATING.B)/2) CALCULATEDRATE
FROM 
RATING JOIN MESSENGER ON RATING.ID = MESSENGER.RATINGID
JOIN POST ON MESSENGER.POSTID=POST.ID
GROUP BY POST.ID

暫無
暫無

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

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