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

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

請(qǐng)先 登錄 后評(píng)論

1 個(gè)回答

醉塵夢(mèng)

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

請(qǐng)先 登錄 后評(píng)論