SQL считать из таблицы за месяц до - PullRequest
0 голосов
/ 20 апреля 2020

Доброе утро!

Я пытаюсь СЧИТАТЬ строки в моей таблице «Audit» в столбце «Audit_process_completed» на основе месяцев. Значение в столбце audit_process_completed представляет собой формат даты: ГГГГ-ММ-ДД. Чтобы получить СЧЕТ текущего месяца, я использую код ниже. Есть ли функция или возможность сказать что-то вроде: «МЕСЯЦ (CURDATE ( -1 )) и т. Д.? Я хотел бы иметь СЧЕТ для каждых последних шести месяцев.

Править : У меня есть из другой функции доступное значение месяца (например, январь -> 01). Может быть, я могу использовать это значение для функции выбора.

Ожидаемый результат - количество строк, в которых дата в столбце ' aud_process_completed 'находится в выделении.

Среда разработки: MySQL Xampp Local

SELECT count(*) 
FROM `audit` 
WHERE uid = 10 
 AND cid = 12345 
 AND MONTH(`audit_process_completed`) = MONTH(CURDATE()) 
 AND YEAR(`audit_process_completed`) = YEAR(CURDATE())

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Я не уверен, полностью ли я понял ваш запрос. Мой запрос получает месяцы с текущего месяца - 7 до текущего месяца - 1 и показывает их количество. Чтобы получить месяцы, нам нужны некоторые расчеты. Чтобы получить одну строку результатов в месяц, нам нужно GROUP BY.

SELECT
 YEAR(audit_process_completed) AS year,
 MONTH(audit_process_completed) AS month,
 COUNT(*) 
FROM audit
WHERE uid = 10 
 AND cid = 12345 
 AND audit_process_completed >= LAST_DAY(current_date) + INTERVAL 1 day - INTERVAL 8 month
 AND audit_process_completed < LAST_DAY(current_date) + INTERVAL 1 day - INTERVAL 1 month
GROUP BY
 YEAR(audit_process_completed),
 MONTH(audit_process_completed)
ORDER BY year, month;
1 голос
/ 20 апреля 2020

См.

SELECT SUM(    MONTH(`audit_process_completed`) = MONTH(CURDATE()) 
           AND YEAR(`audit_process_completed`) = YEAR(CURDATE())) AS count_this_month,
       SUM(    MONTH(`audit_process_completed`) = MONTH(CURDATE() - INTERVAL 1 MONTH) 
           AND YEAR(`audit_process_completed`) = YEAR(CURDATE() - INTERVAL 1 MONTH)) AS count_prev_month
FROM `audit` 
WHERE uid = 10 
 AND cid = 12345 

Вы можете добавить дополнительные поля вывода с вычитанием интервалов с разными месяцами.

...