1

私はSQLを初めて使用し、SQLite3を使用して販売データのバスケット分析を実行しています。

関連する列は、製品ID、一意のトランザクションID(バスケットを識別する)、および製品の数量です。顧客が複数の製品タイプを購入した場合、unqiueトランザクション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もこれを受け入れましたが、何も返しませんでした。

どんなアイデアでも大歓迎です!

E

4

2 に答える 2

3

このようなものを試して、バスケットに1つ以上のアイテムがあるすべてのユーザーを取得します

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

アイテムが1つしかないバスケットの数を選択します。これにより、1つのアイテムに対して1つより多い数量のバスケットも除外されます。それが不要な場合は、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 に答える