Выбрать строки в первой таблице по условию частоты во второй

есть postgresql надо вытащить сопоставленные по условию данные из двух таблиц:
loy_transaction (со столбцами id, purchase_number, cash_number, shift_number, shop_number, sale_time, transaction_time, operation_type, status, discountvalue)
и
loy_bonus_transactions ( id, bonus_account_type, bonus_amount, bonus_period_finish, bonus_period_start, discount_card, advert_act_guid, transaction_id )
жирным шрифтом столбцы с одинаковыми значениями по ним можно сопоставить строки.

требуется такой запрос который который будет выводить номер карты (discount_card) если в одной и той–же смене (shift_number) карта участвовала более 3х раз.

Я остановился вот на таком варианте:
48dfed3fa95e459ebf727f4a53a1c832.png
но, судя по всему, выдает все, так как строки с одной и той–же сменой не привязаны к транзакциям с начислениями из таблицы loy_bonus_transactions
  • Вопрос задан
  • 2721 просмотр
Решения вопроса 1
Наверное как-то так

SELECT lbt.`discount_card`, COUNT(1) as num
FROM `loy_transaction` as lt
LEFT JOIN `loy_bonus_transactions` as lbt
ON lt.`id` = lbt.`transaction_id`
GROUP BY lt.`shift_number`, lbt.`discount_card`
HAVING COUNT(1) > 3;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
xjunkiex
@xjunkiex Автор вопроса
img.leprosorium.com/2193396 мой запрос - фулсайз
Ответ написан
Комментировать
@whats
Select 
    * 
FROM 
    loy_transaction lt 
JOIN 
    loy_bonus_transactions lbt 
ON 
    lt.id = lbt.transaction_id 
group by 
    lbt.shift_number , lbt.discount_card 
HAVING count(*) > 3
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы