Как подсчитать количество постоянных клиентов?

Ссылка скопирована
1 ответ

Всем хорошего дня. Столкнулся с такой задачей - подсчитать количество клиентов, у которых были заказы каждый день за последний месяц. Есть таблица orders, в ней есть колонки order_id, created(дата создания заказа, формат datetime ) и user_id.
Как сделать так, чтобы в расчет брались заказы только за последний месяц я понял ( мой неполный запрос будет ниже )
А как сделать так, чтобы в выводе учитывались только клиенты, которые делали заказ каждый день ?
Текущий код:
SELECT count(user_id)
FROM orders
WHERE DATE(created) >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)

Спасибо !

Дополнительно:

за последний месяц.

Как вы месяц считаете? Последний это текущий, или предыдущий, или от текущей даты до предыдущей такой же?..

Ответы:

SELECT user_id, count(distinct created) FROM orders WHERE created > DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY) -- get last 30 day orders GROUP BY user_id HAVING count(distinct created) = 30 -- check user have orders in 30 different days ;

SELECT user_id, count(distinct created) FROM orders WHERE created > DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY) -- get last 30 day orders GROUP BY user_id HAVING count(distinct created) = 30 -- check user have orders in 30 different days ;

MySQL sandbox

  • Единственно что 30 дней не всегда месяц, конечно же...
  • ThunderCat, sure
    SELECT  	user_id, COUNT(distinct created) FROM orders WHERE created > DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH) GROUP BY user_id HAVING  	COUNT(distinct created) = DATEDIFF(CURRENT_DATE, DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH));

    SELECT user_id, COUNT(distinct created) FROM orders WHERE created > DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH) GROUP BY user_id HAVING COUNT(distinct created) = DATEDIFF(CURRENT_DATE, DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH));

    https://sqlize.online/sql/mysql57/d1f297ce1788c477...

  • Slava Rozhnev, только

    created (дата создания заказа, формат datetime )

    и надо к дате приводить:
    COUNT(distinct date(created))

  • Slava Rozhnev, если есть возможность - взгляните пожалуйста на мой вопрос по БД https://qna.habr.com/q/1136762 . Был бы очень признателен!
  • redelec94, question deleted :(

Учебная или реальная задача ?
В реале я бы упростил до
клиенты которые делали заказы 30 дней за последние 30 дней.

дату время упрошаем до даты
считаем кол-во уникальных дней с заказами у каждого клиента
выбираем тех у кого оно равно 30

А в учебных целях стоит освоить генерацию курсора с данными (даты без пропуска)

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Артём Dev Ответ

Для подсчета количества постоянных клиентов, вам необходимо сначала определить, что именно вы считаете постоянным клиентом. Это может быть клиент, который делает покупки у вас регулярно, клиент, который уже совершил определенное количество покупок, или клиент, который зарегистрирован на вашем сайте определенное количество времени.

Если вы храните информацию о клиентах в базе данных, то вы можете написать SQL-запрос, который вернет количество уникальных клиентов, соответствующих вашим критериям для постоянных клиентов. Например, если вы считаете постоянным клиентом того, кто совершил более 5 покупок, то запрос может выглядеть следующим образом:

SELECT COUNT(DISTINCT client_id) AS total_permanent_clients
FROM purchases
GROUP BY client_id
HAVING COUNT(*) > 5;

SELECT COUNT(DISTINCT client_id) AS total_permanent_clients FROM purchases GROUP BY client_id HAVING COUNT(*) > 5;

Если вы используете язык программирования, например PHP, то вы можете написать скрипт, который пройдется по массиву клиентов и проверит их покупки. Вот пример такого кода на PHP:

$clients = array(
    array('id' => 1, 'purchases' => 7),
    array('id' => 2, 'purchases' => 3),
    array('id' => 3, 'purchases' => 10),
    // и так далее
);
 
$permanent_clients = 0;
foreach ($clients as $client) {
    if ($client['purchases'] > 5) {
        $permanent_clients++;
    }
}
 
echo "Total permanent clients: " . $permanent_clients;

$clients = array( array('id' => 1, 'purchases' => 7), array('id' => 2, 'purchases' => 3), array('id' => 3, 'purchases' => 10), // и так далее ); $permanent_clients = 0; foreach ($clients as $client) { if ($client['purchases'] > 5) { $permanent_clients++; } } echo "Total permanent clients: " . $permanent_clients;

Помните, что определение постоянного клиента может быть разным для разных бизнесов, поэтому важно четко определить свои критерии и использовать их для подсчета. Надеюсь, это поможет вам решить вашу проблему подсчета постоянных клиентов!

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно