SUBSTRING_INDEX计数

该查询旨在统计每个问题被特定用户尝试的次数。通过分析`mental_user_error_up2023_49a`表中的`fail_question_ids`字段,结合`help_topic_id`,利用`SUBSTRING_INDEX`函数来提取`question_id`,并使用`COUNT`进行计数。查询条件限定在用户id为-8JVWZZVQhCLWm273l3H8Q的情况下,计算每个问题ID出现的频率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:计算每个题用户做几次
数据表

SELECT t.question_id ,COUNT(t.question_id)
from (
SELECT a.id,SUBSTRING_INDEX(SUBSTRING_INDEX(a.fail_question_ids,',',b.help_topic_id + 1),',',-1) as question_id
from mental_user_error_up2023_49 a,mysql.help_topic b
WHERE a.id = '-8JVWZZVQhCLWm273l3H8Q'
and help_topic_id < LENGTH( a.fail_question_ids ) - LENGTH(REPLACE(a.fail_question_ids,',','')) + 1
)t GROUP BY t.question_id

结果
计算一行有几个值help_topic_id < LENGTH( a.fail_question_ids ) - LENGTH(REPLACE(a.fail_question_ids,‘,’,‘’)) + 1,例:a=1,2,3,4
个数值=a的长度-a去除逗号的长度+1
help_topic_id > 这个长度的都是重复值
SUBSTRING_INDEX(目标值,分割符号,要截取位位置)
截取位置:1表示第一位 ; -1表示最后一位

sqlserver版本(2014以上)

SELECT 
    b.value AS hrmid,
    a.subject,a.begindate,a.enddate,a.finish
FROM 
    uf_taskinfo a
CROSS APPLY STRING_SPLIT(a.hrmid, ',') AS b
WHERE a.prjid = '1'
GROUP BY b.value,a.subject,a.begindate,a.enddate,a.finish
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值