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

如何在PostgreSQL 15中查询特定多项式组内所有项的公共变量?

解决PostgreSQL中查询多项式组内公共变量的问题

需求分析

针对指定多项式,找出每个组中所有项都包含的公共变量——即某个变量必须出现在该组的每一个项里,才会被纳入结果。

数据表结构回顾

  • groups表:记录多项式对应的组ID
  • variables表:记录每个多项式、组、项对应的变量

解决方案SQL(PostgreSQL 15)

WITH group_term_counts AS (
    -- 计算指定多项式每个组的总项数
    SELECT polynomial, "group", COUNT(DISTINCT term) AS total_terms
    FROM variables
    WHERE polynomial = 1  -- 替换为你要查询的多项式ID
    GROUP BY polynomial, "group"
),
variable_term_coverage AS (
    -- 计算指定多项式每个组中,每个变量覆盖的项数
    SELECT polynomial, "group", variable, COUNT(DISTINCT term) AS covered_terms
    FROM variables
    WHERE polynomial = 1  -- 替换为你要查询的多项式ID
    GROUP BY polynomial, "group", variable
)
-- 筛选出覆盖项数等于组总项数的变量(即组内所有项都包含的变量)
SELECT vtc.variable
FROM variable_term_coverage vtc
JOIN group_term_counts gtc 
    ON vtc.polynomial = gtc.polynomial 
    AND vtc."group" = gtc."group"
WHERE vtc.covered_terms = gtc.total_terms
ORDER BY vtc."group", vtc.variable;

逻辑说明

  1. group_term_counts:统计目标多项式每个组内的不同项总数,比如组5有3个项、组2有2个项。
  2. variable_term_coverage:统计每个组中每个变量分别出现在多少个不同项里,比如组2的变量c出现在2个项里、组5的变量o出现在3个项里。
  3. 关联两个结果集,筛选出变量覆盖项数等于组总项数的记录——这些变量就是该组所有项的公共变量。

验证结果

针对多项式1,执行上述SQL会得到如下结果:

variable
c
f
g
h
o
p

(注:你提供的预期结果中重复的c应为输入笔误,实际逻辑下组2仅会输出一次c)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:42:27