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

PostgreSQL中计算两列元素配对出现的相对占比

解决方案

假设你的表名为your_table_name,可以使用以下SQL语句实现需求:

SELECT 
    elem1,
    elem2,
    COUNT(*)::FLOAT / COUNT(*) OVER (PARTITION BY elem1) AS percentage
FROM 
    your_table_name
GROUP BY 
    elem1, elem2
ORDER BY 
    elem1, elem2;

逻辑说明

  1. 通过GROUP BY elem1, elem2统计每个elem1-elem2组合的出现次数;
  2. 利用窗口函数COUNT(*) OVER (PARTITION BY elem1)计算每个elem1分组下的总记录数;
  3. 将组合的出现次数除以对应elem1的总记录数,通过::FLOAT转换为浮点型,避免整数除法导致的精度丢失;
  4. 最后按elem1和elem2排序,与预期输出格式一致。

原表数据

elem1elem2
AA
AA
AB
AC
BD
BC
CE

预期输出结果

elem1elem2percentage
AA0.5
AB0.25
AC0.25
BD0.5
BC0.5
CE1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:40:27