@Lulzsec

Подсчет одинаковых значений за какой-то период?

Есть работающий запрос
SELECT text,count(*) as 'A' 
FROM all_queries
group by text
having text in ('Привет','Хэллоу','Здравствуйте')
ORDER BY A desc

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

SELECT text,dates,count(*) as 'A' 
FROM all_queries
group by text
having dates > LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH
AND dates < DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 1 DAY)
AND text in ('Привет','Хэллоу','Здравствуйте')
ORDER BY A desc


Запрос работает, но какие-то значения не выдает. Например, если изменить первую(по дате попадания в БД) строку с "Привет" в БД, где дата 12.12.2015 на дату 12.03.2014, то в выборке за текущий месяц значения "Привет" не будет, даже если в БД оно есть (за текущий месяц).

Как сделать так, чтобы за определенный период показывалось кол-во уникальных значений?
  • Вопрос задан
  • 582 просмотра
Решения вопроса 1
Vestail
@Vestail
Software Engineer
Если в запросе есть GROUP BY, то после SELECT могут указываться имена только тех атрибутов которые указаны в GROUP BY или агрегатные функции.
SELECT text, count(*) as 'A' 
FROM all_queries
WHERE dates > LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH
AND dates < DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 1 DAY)
group by text
HAVING text in ('Привет','Хэллоу','Здравствуйте')
ORDER BY A desc
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы