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

如何统计表A多列中特定元素(x,y,z)的每行出现次数?

解决方案

核心思路是逐列判断当前值是否属于{x, y, z}集合,符合条件记为1,否则记为0,最后将三列的判断结果相加,得到每行的目标元素出现次数。

MySQL / MariaDB 实现

SELECT
    bisac1,
    bisac2,
    bisac3,
    desire,
    (
        CASE WHEN bisac1 IN ('x', 'y', 'z') THEN 1 ELSE 0 END +
        CASE WHEN bisac2 IN ('x', 'y', 'z') THEN 1 ELSE 0 END +
        CASE WHEN bisac3 IN ('x', 'y', 'z') THEN 1 ELSE 0 END
    ) AS xyz_count
FROM 表A;

PostgreSQL 实现

利用PostgreSQL内置的bool_to_int函数简化逻辑:

SELECT
    bisac1,
    bisac2,
    bisac3,
    desire,
    bool_to_int(bisac1 IN ('x', 'y', 'z')) +
    bool_to_int(bisac2 IN ('x', 'y', 'z')) +
    bool_to_int(bisac3 IN ('x', 'y', 'z')) AS xyz_count
FROM 表A;

SQL Server 实现

用IIF函数简化条件判断:

SELECT
    bisac1,
    bisac2,
    bisac3,
    desire,
    IIF(bisac1 IN ('x', 'y', 'z'), 1, 0) +
    IIF(bisac2 IN ('x', 'y', 'z'), 1, 0) +
    IIF(bisac3 IN ('x', 'y', 'z'), 1, 0) AS xyz_count
FROM 表A;

结果验证

执行上述语句后将得到如下结果,完全匹配预期的计数要求:

bisac1bisac2bisac3desirexyz_count
xyz103
yzx83
zyx63
xyp202
ryz132
xsz12
ayl121
axk21
xpw11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:20:36