【问题标题】:SQL avg of comma occurrencies with condition带条件的常见事件的 SQL 平均值
【发布时间】:2018-06-02 04:33:49
【问题描述】:

我有一个活动表,其中参与者以逗号分隔的 ID 列表形式列出:

0,4,21,33,41

我正在尝试执行以下查询以仅在状态等于 1 时检索事件的平均参与者人数。

我准备了以下但不起作用,有人可以帮助我吗?

SELECT avg(case when (status = 1 then LENGTH(REPLACE(listofPartecipants, ',', '')) end) avgPartecipants FROM events;

非常感谢

【问题讨论】:

    标签: mysql sql case


    【解决方案1】:

    如果要计算列表中元素的数量,这就是表达式:

    SELECT avg(case when status = 1
                    then LENGTH(REPLACE(listofPartecipants, ',', 'XX')) - length(listofPartecipants) + 1
               end) as avgPartecipants
    FROM events;
    

    比让这个神秘的字符串逻辑正确更重要的是修复你的数据模型。您不应该将 id 列表存储在逗号分隔的列表中。您应该有一个表格,每个事件和每个参与者都有一行。

    【讨论】:

      猜你喜欢
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 2023-03-18
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多