как сделать цикл для выбора синтаксиса в mysql - PullRequest
2 голосов
/ 18 января 2020

у меня есть таблица с именем order_star_member, эта таблица содержит users_id в качестве покупателя, createAt - это дата, когда покупатель совершает транзакцию, а total_price_star_member - это сумма В каждой транзакции каждого покупателя я хочу выбрать покупателя, который стал звездным участником (совершая транзакцию в течение месяца в пределах> = 600000) с этим синтаксисом

select count(*) from (select users_id, sum(total_price_star_member) from order_star_member where createdAt >= '2020-01-01' and createdAt < '2020-02-01' group by users_id having sum(total_price_star_member) >= 600000) inner_query;

, как сделать зацикливание в этом случае, поэтому, когда становится февралем, данные считаются самим покупателем, который становится звездным участником (транзакция> = 600.000), и автоматически вводятся в зависимости от того, совершает ли покупатель транзакцию из примера

: транзакция в январе 600000 и 750000 февраля, Анита делает транзакцию в феврале 600000 и январе 450000, Дони делает свою первую транзакцию в феврале с общей суммой 650000

, поэтому, когда я запускаю этот l oop, он становится 1 февраля звездным членом от января и 3 звездным членом в феврале

1 Ответ

3 голосов
/ 18 января 2020

Я думаю, вам нужен этот подход:

select
    count(*)
from
    (
    select
        users_id,
        sum(total_price_star_member)
    from
        order_star_member
    where
        createdAt >= DATE_ADD(DATE_ADD(LAST_DAY(CURDATE()),
        INTERVAL 1 DAY),
        INTERVAL - 1 MONTH)
        and createdAt <= LAST_DAY(CURDATE())
    group by
        users_id
    having
        sum(total_price_star_member) >= 600000) inner_query;

это должно помочь вам получить фактическую сумму за месяц. Используя CURDATE (), вы находите первый и последний день месяца и используете их.

...