Mysql,创建一个只有一个冒号的 DISTINCT,同时显示另一个冒号
Mysql, make a DISTINCT with only one colone while showing the other
我有一个 table 这样的 :
ID USER PRODUCT
1 user1 product1
2 user2 product2
3 user2 product2
4 user3 product3
我想统计有多少不同的用户购买了每种产品。
我期待这样的事情:
PRODUCT count
product1 1
product2 1
product3 1
我有很多这样的事情,但没有我期望的结果。
SELECT DISTINCT PRODUCT, COUNT(ID) as count FROM `test`
group by USER
(下面的代码提供了这个结果:
PRODUCT count
site1 1
site2 2
site3 1
第二行应该是 1 而不是 2。
有什么建议吗?
谢谢
您要计算非重复计数:
SELECT PRODUCT, COUNT(DISTINCT USER) AS count
FROM test
GROUP BY PRODUCT;
您当前的查询正在使用 SELECT DISTINCT
,它将尝试对所有被选择的内容应用不同的查询。但是,您只希望它应用于用户数。
试试下面的方法:
SELECT product, COUNT(DISTINCT user)
FROM table
WHERE 1 = 1
GROUP BY product
我有一个 table 这样的 :
ID USER PRODUCT
1 user1 product1
2 user2 product2
3 user2 product2
4 user3 product3
我想统计有多少不同的用户购买了每种产品。
我期待这样的事情:
PRODUCT count
product1 1
product2 1
product3 1
我有很多这样的事情,但没有我期望的结果。
SELECT DISTINCT PRODUCT, COUNT(ID) as count FROM `test`
group by USER
(下面的代码提供了这个结果:
PRODUCT count
site1 1
site2 2
site3 1
第二行应该是 1 而不是 2。 有什么建议吗? 谢谢
您要计算非重复计数:
SELECT PRODUCT, COUNT(DISTINCT USER) AS count
FROM test
GROUP BY PRODUCT;
您当前的查询正在使用 SELECT DISTINCT
,它将尝试对所有被选择的内容应用不同的查询。但是,您只希望它应用于用户数。
试试下面的方法:
SELECT product, COUNT(DISTINCT user)
FROM table
WHERE 1 = 1
GROUP BY product