我有一个名为client
的表,如下:
Client Price
============
A 123
A 389
A 34
B 4
B 5
C 33
[例如,这意味着客户A在我们的商店中购买了3次[第一次以123 $的价格购买了第二笔价格为389 $,第三次以34 $的价格购买了]。其他客户的逻辑相同...
我尝试获取百分比表,以获取仅购买1次的客户和购买1次以上的客户。结果应该是
xxxx [文字]
在mysql中最理想的方法是什么?
我认为您需要两个级别的聚合。内在的是:
select client, count(*) as cnt
from clients c
group by client;
然后我将像这样枢转所有计数:
select cnt, count(*), min(client), max(client)
from (select client, count(*) as cnt
from clients c
group by client
) c
group by cnt
order by cnt;
但是您想要更简单的东西:
select (case when cnt = 1 then '1' else '>1' end) as grp,
count(*) as num_clients,
count(*) / sum(count(*)) over () as ratio
from (select client, count(*) as cnt
from clients c
group by client
) c
group by grp;
order by cnt;