[英]How to count distinct values over two categories?
我有一个SQL查询,向我显示每次购买的客户和产品
client | product
-----------------------
Lucy Lu | Banana
Lucy Lu | Banana
Lucy Lu | Pineapple
Mad Damon | Banana
Mad Damon | Apple
Mad Damon | Apple
Peter Fox | Banana
Peter Fox | Banana
Peter Fox | Banana
Peter Fox | Apple
Peter Fox | Apple
我想区分这些查询,但要区分每个客户的每种产品的数量,因此我可以为每个客户看到他购买了每种产品的数量:
client | product | count
----------------------------
Lucy Lu | Banana | 2
Lucy Lu | Pineapple | 1
Mad Damon | Banana | 1
Mad Damon | Apple | 2
Peter Fox | Banana | 3
Peter Fox | Apple | 2
我用count(DISTINCT product)
, count(DISTINCT client)
, count(*)
和GROUP BY (client)
或GROUP BY (product)
尝试,但是没有得到有用的解决方案。 当我用SELECT DISTINCT
[查询的其余部分]尝试时,我得到了想要的但没有count列。
您不需要使用DISTINCT。 一个简单的GROUP BY COUNT即可解决问题。
Oto Shavadze建议此查询:
select client, product, count(*)
from t
group by client, product;
在这里,您可以根据(客户,产品)对的不同值来分组。 COUNT将为您提供每个组中的行数。
尝试此查询,您将获得输出。 这里的test_data是表名。 请用您的table_name替换它。
SELECT count(product) as count,client, product from test_data group by product,client
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.