You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何统计movie_id与rating均匹配的行数?

解决方案

1. 统计相同电影相同评分的用户对数量

核心思路是先按movie_id和rating分组,统计每个组合下的不同用户数,再计算每个组合中能形成的用户对数量(组合数公式:C(n,2)=n*(n-1)/2,n为该组合的用户数),最后将所有组合的用户对数量求和。

针对你的示例数据,对应的SQL查询如下:

SELECT SUM(cnt * (cnt - 1) / 2) AS same_rating_pair_count
FROM (
    SELECT movie_id, rating, COUNT(DISTINCT user_id) AS cnt
    FROM your_table
    GROUP BY movie_id, rating
) AS grouped_data;
  • 内层子查询:按电影ID和评分分组,统计每个分组下的不同用户数量cnt
  • 外层查询:对每个分组计算用户对数量并求和,示例中该查询返回2,符合预期

2. 同时返回唯一电影ID总数

可以在同一条查询中通过子查询获取唯一电影ID的总数,修改后的SQL如下:

SELECT 
    SUM(cnt * (cnt - 1) / 2) AS same_rating_pair_count,
    (SELECT COUNT(DISTINCT movie_id) FROM your_table) AS unique_movie_total
FROM (
    SELECT movie_id, rating, COUNT(DISTINCT user_id) AS cnt
    FROM your_table
    GROUP BY movie_id, rating
) AS grouped_data;

该查询会同时输出两个结果:

  • same_rating_pair_count:相同电影相同评分的用户对数量(示例为2)
  • unique_movie_total:唯一电影ID的总数(示例为3)

内容的提问来源于stack exchange,提问作者ATEATEEFFEEE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:25:20