Помните практический оператор SQL-запроса

SQL

Недавно я реализую функцию для подсчета количества новых пользователей и новых заказов каждый день с учетом дат начала и окончания, как показано на рисунке:

Сравнение начинается глупо, используется метод:

  • Сначала рассчитайте список промежуточных дат на основе времени начала и окончания
  • Просмотрите список, получите текущую дату и следующую дату и запросите количество пользователей и заказов, добавленных за этот период.

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

  • Статистика в днях
SELECT DATE_FORMAT(created_at, “%Y-%m-%d” ) , COUNT( * )  FROM order_table WHERE status = ‘SUCCESS’ GROUP BY DATE_FORMAT( created_at, “%Y-%m-%d” ) ;
  • Статистика в часах
SELECT DATE_FORMAT(created_at, “%Y-%m-%d %H” ) , COUNT( * )  FROM order_table WHERE status = ‘SUCCESS’ GROUP BY DATE_FORMAT( created_at, “%Y-%m-%d %H” ) ;

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