Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 筛选出多个评级中的第一个评级_Mysql_Sql - Fatal编程技术网

Mysql 筛选出多个评级中的第一个评级

Mysql 筛选出多个评级中的第一个评级,mysql,sql,Mysql,Sql,我在一家提供支持的公司工作,有人问我,如果用户在他们的机票历史记录中多次看到相同的自动回复,客户满意度是否会下降。到目前为止,我已经提取了不止一次看到同一个自动响应或“宏”的用户、宏的名称、他们在票证历史记录中看到它的次数以及评级和评级: SELECT user_name, macro_name, COUNT(*), rating FROM macros_used m JOIN cases c ON c.case_number = m.case_number join ratings r on

我在一家提供支持的公司工作,有人问我,如果用户在他们的机票历史记录中多次看到相同的自动回复,客户满意度是否会下降。到目前为止,我已经提取了不止一次看到同一个自动响应或“宏”的用户、宏的名称、他们在票证历史记录中看到它的次数以及评级和评级:

SELECT user_name,  macro_name, COUNT(*), rating
FROM macros_used m
JOIN cases c
ON c.case_number = m.case_number
join ratings r
on r.case_number = c.case_number
where user_name <> ''
GROUP BY user_name, macro_name
HAVING COUNT(macro_name) > 1
我不确定我是否正确拉评级,我可能需要拉所有案例的案例历史和日期,以获得每个案例的评级


我的问题是,有没有一种方法可以过滤掉用户第一次看到使用的宏时提供的第一个评级,因为它不会是重复的。我正在尝试查看用户评分是否由于重复的宏而下降。

您可以使用子查询查找具有该特定宏的案例的第一个和最后一个评分:

select  cm.*
,       first_rating.rating as first_rating
,       last_rating.rating as last_rating
from    (
        select  c.user_name
        ,       m.macro_name
        ,       count(*) as macro_usage_count
        from    cases c
        join    macros_used m
        on      m.fk_case_number = c.pk_case_number
        group by 
                c.user_name
        ,       m.macro_name
        having  count(m.macro_name) > 1
        ) cm
join    (
        select  r.rating
        from    cases c2
        join    macros_used m2
        on      m2.fk_case_number = c2.pk_case_number
                and c2.user_name = cm.user_name
                and m2.macro_name= cm.macro_name
        join    ratings r2
        on      r2.pk_case_number = c2.case_number
        order by
                r.date_submitted
        limit   1
        ) first_rating
join    (
        select  r.rating
        from    cases c2
        join    macros_used m2
        on      m2.fk_case_number = c2.pk_case_number
                and c2.user_name = cm.user_name
                and m2.macro_name= cm.macro_name
        join    ratings r2
        on      r2.pk_case_number = c2.case_number
        order by
                r.date_submitted desc
        limit   1
        ) last_rating
where   m.user_name <> ''

除非您在GROUP BY中添加评级,否则不会运行此查询。因此,您没有正确地获取评级。是的,您需要提取日期,因为您需要知道评级是如何随时间变化的。如果您至少提供一些数据样本就好了。@user2065377:它将在MySQL中运行。MySQL将返回它遇到的第一个评级,基本上是随机的。谢谢。我应该提供一些信息,user_name字段仅在【案例日期】创建的案例表pk_case_number,user_name中,macro_name字段仅在macros_used表fk_case_number,macro_name中,评级仅在评级表pk_case_number,rating,date_submitted【评级日期】中@user2770466:答案已更新。子查询搜索包含宏的所有案例的所有评级。如果你知道每个案例都有一个等级,你可以简化它们。