mysql - 如何计算历史表中每个状态的数量请参阅输出

标签 mysql sql select count group-by

lead table

lead_id  |   name    |  mobile
3710        aaa         888888
3713        bbb         777777
3714        ccc         666666


user table

user_id  |   email    |  pass   |  lead_id
38          ppp         *****       3710
39          qqq         *****       3713
40          rrr         *****       3710


History table

h_id | lead_id  | status  | user_id

49          3710         not dobale      38
108         3713         doable        38
109         3714         pipeline      38
110         3710         converted      38
111         3715         Login          38
112         3713         converted      38

我想统计 perticuler lead_id 的个体状态。

怎么做?

但对于 lead_id 3710,必须考虑 h_id 110 而不是 49 意味着更大的 h_id 在 lead_id 3713 的情况下相同

输出应该是这样的:

ouput (for user_id 38)

status            No
converted   -     2   (lead_id is different)
pipeline       -  1
login      -      1

最佳答案

试试这个:

SELECT h.status, COUNT(DISTINCT lead_id)
FROM History h 
INNER JOIN (SELECT user_id, lead_id, MAX(h_id) h_id 
            FROM History 
            GROUP BY user_id, lead_id
          ) AS a ON h.user_id = a.user_id AND h.lead_id = a.lead_id AND h.h_id = a.h_id 
WHERE h.user_id = 38
GROUP BY h.status 

关于mysql - 如何计算历史表中每个状态的数量请参阅输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27315767/

相关文章:

php - 从 mysql 列中检索和回显多个值

php - 商店时间表的数据库架构

php - 提取 mysql 表中的存储值并将其存储在每个单词的不同变量中

sql - sql中行的级联副本

mysql - 有没有更好的方法来访问数据库中数百个不同的记录?

php - MySQL 到 PHP 数组

sql - 使用 DDL 的准备语句

mysql - 多对多失败, 'on clause' 中的未知列

C# 在一个字符串查询中插入并选择

mySQL - 有效地检查表中的重复项