帖子的用戶的關注者數(shù)量該如何編寫 SQL 語句呢?

在一個社交媒體平臺的數(shù)據(jù)庫中,有帖子表(包含帖子 ID、用戶 ID、帖子內(nèi)容、發(fā)布時間、點贊數(shù)等字段)和用戶關注表(包含關注者用戶 ID、被關注者用戶 ID)。我想找出在過去一周內(nèi)發(fā)布的點贊數(shù)超過 1000 的熱門帖子,以及發(fā)布這些帖子的用戶的關注者數(shù)量,該如何編寫 SQL 語句呢?

請先 登錄 后評論

1 個回答

醉塵夢

SELECT 

    p.post_id,

    p.user_id,

    p.post_content,

    p.publish_time,

    p.likes,

    COUNT(DISTINCT f.followee_user_id) AS followers_count

FROM 

    posts p

LEFT JOIN 

    followers f ON p.user_id = f.user_id

WHERE 

    p.publish_time > NOW() - INTERVAL 7 DAY

    AND p.likes > 1000

GROUP BY 

    p.post_id

SELECT 子句指定了要選擇的字段:帖子ID (p.post_id)、用戶ID (p.user_id)、帖子內(nèi)容 (p.post_content)、發(fā)布時間 (p.publish_time)、點贊數(shù) (p.likes) 以及發(fā)布者的關注者數(shù)量 (followers_count)。 FROM posts p 指定了主表 posts 并給它起了一個別名 p。 LEFT JOIN followers f ON p.user_id = f.user_id 表示將 posts 表與 followers 表進行左連接,連接條件是發(fā)布帖子的用戶ID等于關注表中的用戶ID。 WHERE 子句限定了帖子的發(fā)布時間在過去7天內(nèi),并且點贊數(shù)超過1000。 NOW() - INTERVAL 7 DAY 計算出當前時間之前7天的時間點。 GROUP BY p.post_id 表示按照帖子ID進行分組,這樣每個帖子只會被計算一次。 COUNT(DISTINCT f.followee_user_id) AS followers_count 計算每個發(fā)布者的關注者數(shù)量,使用 DISTINCT 確保計數(shù)的是不同的關注者。

請先 登錄 后評論