1

我对 SQL 非常陌生,并且正在使用 SQLite 3 对销售数据进行购物篮分析。

相关列是产品 ID、唯一交易 ID(标识购物篮)和产品数量。如果客户购买了不止一种产品类型,则重复唯一的交易 ID。

我想计算客户购买 1 件商品的篮子数量。

到目前为止我已经尝试过select count(distinct uniqID) from salesdata having sum(qty) = 1;

但这带来了一个错误的说法a GROUP BY clause is required before HAVING

然后我尝试了select count(distinct uniqID) from salesdata group by uniqID having sum(qty) = 1

SQlite 接受了这一点,但返回给我一个只有 1 的列表,这也不对!

然后我尝试了select count(uniqID) from salesdata group by qty having sum(qty) = 1

SQlite 也接受了这一点,但什么也没返回。

任何想法将不胜感激!

4

2 回答 2

3

尝试这样的事情来检索每个用户在他的购物篮中拥有多于或等于一个项目

select uniqID, sum(qty) as total from salesdata group by uniqID having total >= 1

如果您只想让购物篮中有 1 件商品的用户替换>=1=1

喜欢:

select uniqID, sum(qty) as total from salesdata group by uniqID having total = 1

如果您想要在他们的购物篮中有 1 件商品的用户数量,您可以这样得到:

SELECT COUNT(*) FROM (select uniqID, sum(qty) as total from salesdata group by uniqID having total 
= 1)
于 2012-02-02T12:29:04.130 回答
0

选择只有一件商品的篮子数量。这也将过滤掉数量高于单件商品的篮子。如果您不想要,请删除该WHERE qty = 1部分。

  SELECT 
    COUNT(uniqID)    FROM 
    (SELECT 
      uniqID, SUM(qty) AS total 
     FROM 
      salesdata 
     WHERE 
       qty = 1 
     GROUP BY 
       uniqID 
     HAVING 
       total = 1)
于 2012-02-02T12:45:24.240 回答