我花了很多年的时间研究这个问题,却没有发现任何直接解决这个问题的内容。
我正在努力确定哪些客户在总体水平上“喜欢”其他客户。
如何为另一列的某些值计算一列上的重复值数量?
在下面的示例中,我想知道“客户112”和“客户113”的记录有多少与“客户111”显示的值相同的变量值。
答案是:Customer 112 = 3 (27, 28 and 30 are all duplicates of values shown for Customer 111)
和Customer 113 = 2 (24 and 26 are both duplicates of values shown for Customer 111)
。
Customer Variable
111 21
111 22
111 23
111 24
111 26
111 27
111 28
111 29
111 30
112 23
112 27
112 28
112 30
112 31
112 33
112 35
113 24
113 26
113 33
113 35
输出结果为:
Customer Count
112 3
113 2
任何建议都将不胜感激。
答案 0 :(得分:3)
这是一种方法,通过加入“111”客户价值,然后汇总:
select t.customer, count(t111.variable) as "count"
from t left outer join
(select t.*
from t
where customer = 111
) t111
on t.variable = t111.variable
group by t.customer;
我认为以上内容清楚地说明了它在做什么。但是,您可以消除子查询(在MySQL中很好):
select t.customer, count(t111.variable) as "count"
from t left outer join
t t111
on t.variable = t111.variable and t111.customer = 111
group by t.customer;
答案 1 :(得分:1)
这会给你:
Customer Count
112 3
113 2
以下是代码:
SELECT customer,count(variable)
FROM t where variable in
(select variable from t where customer=111)
GROUP BY customer
HAVING customer!=111;
中查看