Я знаком с Excel VBA, но только начал работать с SQL, используя SQLite Studio.У меня есть таблица, подобная следующей:
Customer_ID Qty_Sold
Retail001 10
Retail001 20
Retail002 30
Wholesale001 100
Wholesale001 100
Wholesale001 100
Wholesale002 200
Wholesale003 500
Wholesale003 600
, и я хочу классифицировать клиента по 3 категориям: розничная торговля, оптовая мелкая и оптовая крупная, с кол-во проданных более 1000, являющихся крупными оптовыми покупателями.Таким образом, желаемый результат выглядит следующим образом:
Customer_ID Qty_Sold Classification
Retail001 10 Retail
Retail001 20 Retail
Retail002 30 Retail
Wholesale001 100 Wholesale Small
Wholesale001 100 Wholesale Small
Wholesale001 100 Wholesale Small
Wholesale002 200 Wholesale Small
Wholesale003 500 Wholesale Large
Wholesale003 600 Wholesale Large
У меня проблема с использованием функции, подобной sumifs, для определения количества покупок каждого клиента.Поэтому в контексте Excel VBA я могу использовать для этого цикл For Next и операторы If Then, поэтому я могу написать, например:
WorksheetFunction.SumIfs(Range("B2:B9"), Range("A" & i), Range("A2:A9")) > 1000
, где i - счетчик в цикле.Тем не менее, в SQL я понимаю, что это трудно реализовать, поскольку идентификатор клиента не является жестко закодированной строкой, а динамически основан на разных строках.Вот некоторый код, который я пробовал:
Select customer_id, qty_sold,
Case
When customer_id Like 'Wholesale&' And (...) > 1000 Then 'Wholesale Large'
When customer_id Like 'Wholesale&' And (...) <= 1000 Then 'Wholesale Small'
Else 'Retail'
End As Classification
From Base_Table
;
Поскольку (...) часть - это то, где я не знаю, как писать.Я думаю, что это может быть что-то вроде:
Sum(Case When customer_id then qty_sold end) > 1000
, но я не знаю, как ссылаться на значение в каждой строке.