我有一个事件表,其中partecipants被列为逗号分隔的ID列表:
0,4,21,33,41
我尝试执行以下查询,以便仅在status等于1时检索事件的平均partecipants数。
我准备了以下但是没有工作,任何人都可以帮助我吗?
SELECT avg(case when (status = 1 then LENGTH(REPLACE(listofPartecipants, ',', '')) end) avgPartecipants FROM events;
非常感谢
答案 0 :(得分:1)
如果要计算列表中元素的数量,这是表达式:
SELECT avg(case when status = 1
then LENGTH(REPLACE(listofPartecipants, ',', 'XX')) - length(listofPartecipants) + 1
end) as avgPartecipants
FROM events;
比获得这种神秘的字符串逻辑更重要的是修复数据模型。您不应该在逗号分隔的列表中存储ID列表。你应该有一个表,每个事件和每个参与者一行。