Sql 如何找到有多少客户从一张桌子上购买了不止一件物品

Sql 如何找到有多少客户从一张桌子上购买了不止一件物品,sql,postgresql,Sql,Postgresql,表销售: create table sales ( Date date, customer_id integer, product_id integer, units_sold integer, paid_amount integer ); Insert into sales (Date, customer_id, product_id, units_sold, paid_amount) VALUES ('20

表销售:

  create table sales (  
    Date date,  
    customer_id integer,  
    product_id integer,  
    units_sold integer,  
    paid_amount integer  
    );

Insert into sales (Date, customer_id, product_id, units_sold, paid_amount)  
VALUES  
('2016-01-01', '1', '1', '5', '45'),  
('2016-01-01', '2', '1', '2', '18'),  
('2016-01-01', '3', '2', '7', '35'),  
('2016-01-07', '1', '3', '3', '45'),  
('2016-01-07', '2', '2', '5', '25'),  
('2016-01-07', '4', '2', '5', '25'),  
('2016-01-10', '1', '4', '5', '30'),  
('2016-01-10', '2', '4', '5', '30'),  
('2016-01-10', '4', '5', '6', '60'),  
('2016-01-10', '4', '3', '9', '135'),  
('2016-01-14', '3', '1', '4', '60'),  
('2016-01-14', '2', '3', '6', '90'),  
('2016-01-14', '2', '3', '6', '90');  
有多少客户在每次访问(即每天)时购买了不止一种不同的产品?

您需要分组并获得如下计数:

你需要分组,然后像这样计算计数



您的查询返回的是答案2,但当我们查看数据时,它是1,只有一个customer_id为“4”的客户在同一日期购买了多个不同的蔬菜。@ashutoshsingh,根据您发布的数据和问题,当您查看数据时,最后两行是相同的,即重复的。这意味着customer_id=2在同一天购买了两次相同的产品。因此,结果中不应考虑这一点。因为这些问题要求不止一种不同的产品。嗨@Rahul,如果我必须找到每天支付金额第二高的产品。。。我正在尝试从SelectDate、customer\u id、product\u id、paid\u amount、rank OVER PARTITION BY date ORDER BY paid\u amount DESC FROM sales s中选择*,其中rank=2;它没有给出14号的结果。你能help@ashutoshsingh,您可能可以按相同的顺序按计数进行排序不同的产品描述限制1,1。此外,请针对这一点发布单独的问题。您的查询返回的是答案2,但当我们查看数据时,答案是1,只有一位customer_id='4'的客户在同一日期购买了多个不同的蔬菜。@ashutoshsingh,根据您发布的数据和正确的问题,当您查看数据时,最后两行是相同的,即,复制这意味着customer_id=2在同一天购买了两次相同的产品。因此,结果中不应考虑这一点。因为这些问题要求不止一种不同的产品。嗨@Rahul,如果我必须找到每天支付金额第二高的产品。。。我正在尝试从SelectDate、customer\u id、product\u id、paid\u amount、rank OVER PARTITION BY date ORDER BY paid\u amount DESC FROM sales s中选择*,其中rank=2;它没有给出14号的结果。你能help@ashutoshsingh,您可能可以按相同的顺序按计数进行排序不同的产品描述限制1,1。此外,还可以针对这个问题单独提出一个问题。不相关,但是:数字应该在SQL中不带单引号地指定45'是一根弦,45'是一根弦number@a_horse_with_no_name这是一个不同的表,在这里没有用处,我们只能用这个得到结果table@a_horse_with_no_name我们在这个表中有一个产品标识。@a_horse_,带有_no_name,一些蔬菜的所有产品标识没有其他相关,但是:在SQL中指定数字时不应使用单引号。”45'是一根弦,45'是一根弦number@a_horse_with_no_name这是一个不同的表,在这里没有用处,我们只能用这个得到结果table@a_horse_with_no_name我们在这个表中有一个产品标识。@a\u horse\u和\u no\u name一些蔬菜的所有产品标识,其他什么都没有
select customer_id, count(distinct product_id) as item_purchased
from sales 
group by "date", customer_id
having count(distinct product_id) > 1;