#sql #join
#sql #Присоединиться
Вопрос:
У меня есть такая таблица:
Id-------Product---------date-------productID
1 a 2012 a1
1 a 2013 a1
1 b 2013 b1
2 a 2011 a1
2 c 2012 c1
В нем почти 2 миллиона строк без первичного ключа.
Я хочу создать представление, в котором отображается количество продуктов, приобретенных каждым клиентом. Что мне делать? Спасибо, ребята!
Комментарии:
1. @Gordon Linoff Спасибо, чувак! я опубликовал этот вопрос на своем планшете, сайт сильно отличается на планшете, и я не смог его отредактировать
2. Как вы идентифицируете клиента и заказ, можете ли вы добавить структуру вспомогательных таблиц к вашему вопросу?
3. Итак, каковы желаемые результаты для этого примера данных? Как вы думаете, почему для этого требуется самосоединение, а не простая группа by?
4. клиенты @swestfall идентифицируются по CustomerID, который показан в приведенной выше таблице как идентификатор, в реальной таблице есть несколько других столбцов, таких как период использования продукта клиентами и тому подобное. но на самом деле нет никаких поддерживающих таблиц. вот и все.
Ответ №1:
Я предполагаю, что id
это относится к клиенту. В этом случае вам не нужен a join
, вам нужен group by
:
select id, count(*) as numPurchases, count(distinct product) as numProducts
from table t
group by id;
Для представления вы просто добавляете create view t as
Комментарии:
1. почему вы посчитали разные продукты? возможно, они купили один и тот же продукт дважды или более. проблема в том, что у меня нет OrderID в таблице
2. @RmanEdv . , , Утверждение: «показывает количество приобретенных продуктов» может означать количество отдельных продуктов или общее количество покупок. Я включил оба.