我有一个事件表,其中参与者以逗号分隔的 ID 列表形式列出:
0,4,21,33,41
我正在尝试执行以下查询以仅在状态等于 1 时检索事件的平均参与者人数。
我准备了以下但不起作用,有人可以帮助我吗?
SELECT avg(case when (status = 1 then LENGTH(REPLACE(listofPartecipants, ',', '')) end) avgPartecipants FROM events;
非常感谢
最佳答案
如果你想计算列表中元素的数量,这是表达式:
SELECT avg(case when status = 1
then LENGTH(REPLACE(listofPartecipants, ',', 'XX')) - length(listofPartecipants) + 1
end) as avgPartecipants
FROM events;
比让这个神秘的字符串逻辑正确更重要的是修复你的数据模型。您不应将 ID 列表存储在以逗号分隔的列表中。您应该有一个表格,每个事件和每个参与者一行。
关于mysql - 具有条件的常见事件的 SQL 平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50650622/