запроса?
чтобы можно было менять эту переменную на любую другую дату 1 раз вместо 4х
запрос считает отток компаний
WITH
pay AS
(SELECT COUNT(*) AS CO1
FROM companies
WHERE (companies.next_payment_at >= DATE(DATE_ADD(NOW(), INTERVAL -30 day))) AND (companies.next_payment_at < DATE(NOW()))),
pay_0 AS
(SELECT COUNT(*) AS CO2
FROM companies
WHERE (companies.next_payment_at >= DATE(DATE_ADD(NOW(), INTERVAL -30 day)))
AND (companies.trial_end_at < DATE(DATE_ADD(NOW(), INTERVAL -30 day))))
SELECT CO1 / CO2 * 100
FROM pay_0 CROSS JOIN pay;
Ну, WITH напишыте.
не поняла) можете пояснить, пожалуйста?
Почитайте про CTE. Оформите select now() в CTE и замените вызовы now() на select из CTE
Глянул на ваш код внимательнее Для развития sql навыков советую попробовать и более идиоматичный подход. В вашем коде несколько раз используется вычитание 30 дней из now. Перенесите это выражение в то же cte второй колонкой. И вместо запросов к cte используйте join к нему. Не факт, что это будет эффективнее - надо смотреть на планы, но set based мышление разовьёт
Переменных в запросах не существует . переменные существуют в процедурах, функции , в триггерах.
В клиентском соединении хранятся все переменные. Ты можешь создать переменную и туда занести значение Now а потом его как угодно менять запятая и использовать в запросе. Всё равно собственно запрос тут ни при чём
Да он написал ерунду
а как создать переменную в клиентском запросе?
Ну в общем-то Илья прав, тебе просто переменные вообще не нужны ни на фиг. И ничего страшного вычисление одного выражения 4 5 20 раз нет
Cte у тебя тут уже есть, тебе надо ещё добавить одну таблицу в самом начале, точнее это будет псевдо таблица, встроенный в запрос Вью с одной строкой, где ты можешь написать параметры запроса которые тебе нужны
Но главное что здесь в таком простом запросе это наверное не имеет смысла, ты только усложнишь запрос и его читаемость, а существенно Ничего не поменяется
now получилось вынести🥳 а INTERVAL -30 day не получилось. я хотела его второй кололнкой в cte_date as (SELECT NOW() as date_now) добавить
И что не получилось то?
Как в сказке - ковер соткала? - соткала - неси - не соткала - а чего сказала, что соткала? - думала, что соткала :)
Обсуждают сегодня