2012-02-02 2 views
1

Я очень новичок в SQL и использую SQLite 3 для запуска анализа корзины по данным продаж.Как подсчитать данные, где сумма больше, чем x

Соответствующие столбцы - это идентификатор продукта, уникальный идентификатор транзакции (который идентифицирует корзину) и количество продукта. Если клиент купил более одного типа продукта, идентификатор транзакции unqiue повторяется.

Я хочу посчитать количество корзин, где клиент купил 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 принял это, но вернулся мне список из всего 1s, который не является правильным либо!

Затем я попытался select count(uniqID) from salesdata group by qty having sum(qty) = 1

SQlite также принял это, но не дал ничего.

Любые идеи были бы высоко оценены!

E

+0

Просто используйте сумму (кол-во)> 1 или любое значение и хотите, так как вы используете сумму = 1, так группа по вернет только результаты, где сумма = 1 –

ответ

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) 
+0

Это еще не возвращает количество пользователей, имеющих только один предмет в их корзине. Я думаю, что 'select count (uniqID) from (выберите uniqID, sum (qty) как total from salesdata, где qty = 1 group by uniqID с общим = 1)'? – sinni800

+0

Посмотрите на мое редактирование. – fyr

+0

Ну, теперь я уже отправил ответ о моем продлении;) – sinni800

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)