MySQL按每个逗号分隔的值分组

MySQL按每个逗号分隔的值分组,mysql,sql,Mysql,Sql,在任何人发表评论之前,我没有用逗号分隔的值设计这个数据库:) 我花了很多时间试图找到答案,但我所能找到的只是组_CONCAT(),它似乎与我想要的正好相反 我想按逗号分隔值字段中的每个值分组 SELECT round(avg(DATEDIFF( dateClosed , dateAded ) * 1.0), 2) AS avg, department FROM tickets GROUP BY assignedto assignedto字段是逗号分隔的值字段 row1 54,69,555 ro

在任何人发表评论之前,我没有用逗号分隔的值设计这个数据库:) 我花了很多时间试图找到答案,但我所能找到的只是组_CONCAT(),它似乎与我想要的正好相反

我想按逗号分隔值字段中的每个值分组

SELECT round(avg(DATEDIFF( dateClosed , dateAded ) * 1.0), 2) AS avg, department
FROM tickets GROUP BY assignedto
assignedto字段是逗号分隔的值字段

row1 54,69,555
row2 54,75,555
row3 75,555
期望输出:分配到分组字段中每个值的平均四舍五入数字

编辑-尝试将其提升到下一个级别: 我想包括票证应答表以获得该票证的第一个响应,使用其datetime字段计算每个用户的平均响应时间

SELECT a.id as theuser, round(avg(DATEDIFF( ta.dateAded , t.dateAded ) * 1.0), 2) as avg
FROM tickets t join
     mdl_user a
     on find_in_set(a.id, t.assignedto) > 0
INNER JOIN (SELECT MIN(ta.dateAded) as started FROM ticketanswer GROUP BY ta.ticketId) ta ON t.id = ta.ticketId
GROUP BY a.id ORDER BY avg ASC

恶心。你可以这样做,假设你知道作业的最大数量。以下是一种方法:

select substring_index(substring_index(assignedto, ',', n.n), ',', -1) as assignedto,
       round(avg(DATEDIFF( dateClosed , dateAded ) * 1.0), 2) as avg
from tickets t join
     (select 1 as n union all select 2 union all select 3)
     on length(assignedto) - length(replace(assignedto, ',', '')) < n.n
group by substring_index(substring_index(assignedto, ',', n.n), ',', -1);

很抱歉,您必须处理这种格式不正确的数据库结构。

糟糕。你可以这样做,假设你知道作业的最大数量。以下是一种方法:

select substring_index(substring_index(assignedto, ',', n.n), ',', -1) as assignedto,
       round(avg(DATEDIFF( dateClosed , dateAded ) * 1.0), 2) as avg
from tickets t join
     (select 1 as n union all select 2 union all select 3)
     on length(assignedto) - length(replace(assignedto, ',', '')) < n.n
group by substring_index(substring_index(assignedto, ',', n.n), ',', -1);

很抱歉,您必须处理这种格式不正确的数据库结构。

糟糕。你可以这样做,假设你知道作业的最大数量。以下是一种方法:

select substring_index(substring_index(assignedto, ',', n.n), ',', -1) as assignedto,
       round(avg(DATEDIFF( dateClosed , dateAded ) * 1.0), 2) as avg
from tickets t join
     (select 1 as n union all select 2 union all select 3)
     on length(assignedto) - length(replace(assignedto, ',', '')) < n.n
group by substring_index(substring_index(assignedto, ',', n.n), ',', -1);

很抱歉,您必须处理这种格式不正确的数据库结构。

糟糕。你可以这样做,假设你知道作业的最大数量。以下是一种方法:

select substring_index(substring_index(assignedto, ',', n.n), ',', -1) as assignedto,
       round(avg(DATEDIFF( dateClosed , dateAded ) * 1.0), 2) as avg
from tickets t join
     (select 1 as n union all select 2 union all select 3)
     on length(assignedto) - length(replace(assignedto, ',', '')) < n.n
group by substring_index(substring_index(assignedto, ',', n.n), ',', -1);


很抱歉,您必须处理这种格式错误的数据库结构。

您的问题不太清楚。请尝试发布您的tickets表的一些示例数据和所需的输出数据。是否将csv('assingInto')转换回行?创建具有票证ID和单个值的表。如果车票包含修改时间,也包括修改时间。简单点,你的问题不太清楚。请尝试发布您的tickets表的一些示例数据和所需的输出数据。是否将csv('assingInto')转换回行?创建具有票证ID和单个值的表。如果车票包含修改时间,也包括修改时间。简单点,你的问题不太清楚。请尝试发布您的tickets表的一些示例数据和所需的输出数据。是否将csv('assingInto')转换回行?创建具有票证ID和单个值的表。如果车票包含修改时间,也包括修改时间。简单点,你的问题不太清楚。请尝试发布您的tickets表的一些示例数据和所需的输出数据。是否将csv('assingInto')转换回行?创建具有票证ID和单个值的表。如果车票包含修改时间,也包括修改时间。简单点,太棒了,谢谢你。我使用了第二个,因为我有一个用户表来连接它to@Codded . . . 你应该问另一个问题,而不是编辑一个已经回答的问题;太好了,谢谢你。我使用了第二个,因为我有一个用户表来连接它to@Codded . . . 你应该问另一个问题,而不是编辑一个已经回答的问题;太好了,谢谢你。我使用了第二个,因为我有一个用户表来连接它to@Codded . . . 你应该问另一个问题,而不是编辑一个已经回答的问题;太好了,谢谢你。我使用了第二个,因为我有一个用户表来连接它to@Codded . . . 你应该问另一个问题,而不是编辑一个已经回答的问题;