2017-01-24 3 views
-1
---------------------------------------- 
|transaction_id|customer_id|month|value| 
---------------------------------------- 

Я ищу запрос SQL, который бы возвращал идентификатор клиентов, у которых было больше транзакций в октябре месяце, а не в ноябре, или клиентов, которые ТОЛЬКО имели транзакции в ноябре (и ни одного в октябре). Столбец месяца имеет тип string (а не дату)SQL-запрос для групповых транзакций по месяцам

Я думал, что внутреннее соединение может это сделать, но в прошлом я не знаю, как подойти к этой проблеме.

Это то, что я попытался

select customer_id 
from tbl_name 
where (select count(month is 'October') > count(month is 'November') from tbl_name) 

Спасибо

+2

Вы пытались решить это самостоятельно? Показать код. – dfundako

+0

** [изменить] ** ваш вопрос и добавить некоторые примерные данные и ожидаемый результат на основе этих данных. [** Отформатированный текст **] (http://stackoverflow.com/help/formatting), пожалуйста, [скриншоты] (http://meta.stackoverflow.com/questions/285551/why-may-i-not -upload-images-of-code-on-so-when-ask-a-question/285557 # 285557) –

+0

Я попытался это сделать, но я знаю, что это неправильно. Я думал об использовании подзапроса, в котором я мог бы получить подсчеты за месяц в октябре и ноябре для каждого customer_id и сравнить их и проверить, превышает ли он один из них – Macterror

ответ

0

Вы подсчитать количество записей. Итак, вы объединяетесь. Вы хотите рассчитывать на customer_id. Так вы бы группа customer_id. Вы забыли это в своем запросе.

Затем вы сравнили количество в пункте HAVING, то есть после подсчета записей за октябрь и ноябрь.

select customer_id 
from tbl_name 
where month in ('October', 'November') 
group by customer_id 
having count(case when month = 'October' then 1 end) > 
     count(case when month = 'November' then 1 end) 
    or count(case when month = 'October' then 1 end) = 0; 

Вам не нужно обращаться к таблице дважды, как вы видите. Просто суммируйте и посмотрите, что у вас есть :-)

+0

Спасибо !, как я могу напечатать customer_id для клиентов, которые покупали только товары в ноябре? Я думаю, что это напечатает только customer_id, если в октябре их будет больше. – Macterror

+0

Вы правы, я забыл об этом. Один простой способ - добавить критерии с помощью 'OR'. Я обновил свой ответ. –

+0

Это определенно благодарит вас! – Macterror

Смежные вопросы