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

SQL JOIN:筛选无关联评论且无同时间关联评论的mpr_metrics行

解决方案

要实现需求——统计无关联评论且所属start_time下无任何带评论的metric的行数,原查询的问题在于仅排除了有直接评论的metric,但未过滤那些和带评论metric同start_time的无评论metric。

正确查询方法1:子查询排除存在评论的时间点

SELECT COUNT(DISTINCT m.id)
FROM mpr_metrics m
LEFT JOIN mpr_metrics_reviews r ON m.id = r.metric_id
WHERE r.id IS NULL
AND m.start_time NOT IN (
    -- 找出所有存在关联评论的start_time
    SELECT DISTINCT m2.start_time
    FROM mpr_metrics m2
    JOIN mpr_metrics_reviews r2 ON m2.id = r2.metric_id
);

正确查询方法2:窗口函数统计时间点评论数

SELECT COUNT(DISTINCT id)
FROM (
    SELECT 
        m.id,
        m.start_time,
        -- 统计当前start_time下所有关联评论的总数
        COUNT(r.id) OVER (PARTITION BY m.start_time) AS total_reviews
    FROM mpr_metrics m
    LEFT JOIN mpr_metrics_reviews r ON m.id = r.metric_id
) t
-- 仅保留时间点无任何评论的行(自然这些行本身也无关联评论)
WHERE total_reviews = 0;

逻辑说明

  1. 两种方法都会先定位出存在至少一个带评论metric的start_time,然后排除所有属于这些时间点的无评论metric
  2. 最终仅保留那些:自身无关联评论,且所在start_time下没有任何metric被评论过的行——对应示例中的ID=5的metric,统计结果为1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 08:32:18