2012-02-02 3 views
1

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

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

Я хочу выбрать только корзины, где клиент купил более 1 предмета.

Есть ли какой-либо способ SQLite для выбора уникального идентификатора транзакции и суммы количества, но только для уникальных идентификаторов транзакций, где количество больше одного?

До сих пор я пытался:

select uniqID, sum(qty) from salesdata where sum(qty) > 1 group by uniqID; 

Но SQLite дает мне ошибку «злоупотребление агрегатный: сумма()»

Извините, если это простой вопрос, но я изо всех сил, чтобы найти какой-либо Соответствующая информация по googling!

+0

Пожалуйста, разместите свою структуру таблицы ('.schema'). –

ответ

10

Попробуйте

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

"where" не могут быть использованы на агрегатных функций - вы можете использовать только where на uniqId, в этом случае.

+0

большое вам спасибо! – EAndrews

+0

на аналогичной ноте, если бы я хотел считать разные uniqID, где количество было больше 1, как бы я это сделал? Я попытался выбрать счетчик (отдельный uniqID) из salesdata с суммой (qty)> 1, а также выбрать счетчик (отдельный uniqID) из группы salesdata по uniqID с суммой (qty)> 1, и ни одна из них не сработала – EAndrews

+0

Вопрос: вопрос не совсем верен. Если вы запрашиваете разные 'uniqID', которые 'qty' вы используете, когда несколько строк с одним и тем же' uniqID'? – YXD

1

Если вы хотите поставить какое-либо условие на результат, который вы получите с группой, вы должны использовать его.

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

Вы можете установить любое условие, имеющее нормальный характер, как там, где.

having sumqty = 1 ,having sumqty < 1 ,having sumqty IN (1,2,3) etc..