MySQL查询帮助 - 分组和计算问题

时间:2014-04-24 11:38:54

标签: mysql sql

我有一个mySQL数据库,我试图通过catch获取特定的数据。解释这一点的最好方法是向您展示。

我有一个具有用户名和ID_no的表,该ID并不总是唯一的,有些情况会显示重复(这是预期的),表可能看起来像这样

Username    ID_No
 User1  1111111
 User1  1111111
 User1  1111111
 User1  1111111
 User1  2222222
 User1  3333333
 User1  3333333
 User1  444444
 User1  444444
 User1  444444
 User1  555555
 User1  666666

我需要得到一个独特的计数,这是一块蛋糕

   Select username, count(Distinct id_no) 
   from Cases
   group by username

这给了我一个6的计数。这就是它变得有趣的地方我现在需要加入另一个表来添加一个类别,这样表可能看起来像这样

Username    Cat ID_No
User1   Category1   1111111
User1   Category2   1111111
User1   Category2   1111111
User1   Category2   1111111
User1   Category5   2222222
User1   Category6   3333333
User1   Category7   3333333
User1   Category8   444444
User1   Category8   444444
User1   Category8   444444
User1   Category11  555555
User1   Category12  666666

有了这个我还需要获得一个unquie计数,但是这里的问题是我需要匹配与之前相同的数字(6),但这是我在MySQL中如何做到这一点的问题因为正如你所看到的那样,有些类别重叠,因此我的查询很简单,因为它看起来像这样

   Select username, cat, count(Distinct id_no) 
   from Cases c
   join Case_details cd on c.id_no=cd.id_no
   group by username, cat

因为我不得不按猫分组,所以得到8分。 如果这是SQL服务器,我可以使用ID上的前1来进行内部查询(我认为),但mySQL不允许我在子查询中使用限制。

所以要清楚我真正需要做什么看起来像这样

Username    Cat ID_No
User1   Category1   1111111

User1   Category5   2222222
User1   Category6   3333333

User1   Category8   444444

User1   Category11  555555
User1   Category12  666666

您会注意到只显示了具有该ID的第一个类别。作为总计数,它将与第一个相同,这就是我正在寻找的。

有人在这里有任何想法吗?

0 个答案:

没有答案