Ваш запрос:
SELECT MAX(no_hits)
FROM (SELECT count(hits) AS 'no_hits' ) FROM stats
WHERE 'date' >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH
AND zones_code IN('011242077793513596890', '011242077783866125432')
);
Вот некоторые проблемы с вашим запросом:
- Вы закрыли скобки подзапроса после
'no_hits'
.
- Вы не указали псевдоним таблицы для подзапроса. Каждая производная таблица должна иметь псевдоним таблицы.
- Вы не закрыли скобки для функции
DATE_SUB()
.
- Вы использовали
COUNT()
, где, я думаю, вам следует использовать SUM()
, если вы хотите общее количество попаданий на зону.
- Вы не связываете промежуточный итог попаданий с каждой зоной; ваш промежуточный итог для всей таблицы.
- Вы использовали строковые разделители (
''
) для 'date'
вместо идентификаторов (т.е. обратных кавычек). Вы сравниваете буквенную строку 'date'
со значением даты, когда вы хотите сравнить столбец date
со значением даты.
Запрос в ответе @ chaos близок, но я думаю, что вы должны использовать SUM()
:
SELECT `zones_code`, SUM(`hits`) AS `no_hits`
FROM `stats`
WHERE `date` >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
GROUP BY `zones_code`
ORDER BY `no_hits` DESC
LIMIT 1;
Результат: zone_code 011242077793513596890, всего 255 обращений.
PS: Когда вы задаете вопросы онлайн, пожалуйста, предоставьте в текстовом формате достаточно кода и данных, чтобы люди могли легко тестировать. Вы предоставили снимок экрана с некоторыми примерами данных без указания кода создания таблицы. Это не так полезно, как если бы вы указали действительный оператор CREATE TABLE
и пример оператора INSERT
для его заполнения.
CREATE TABLE IF NOT EXISTS `stats` (
`id` int(11) NOT NULL,
`zones_code` char(21) default NULL,
`date` date default NULL,
`hits` int(11) default NULL,
PRIMARY KEY (`id`)
);
INSERT INTO stats VALUES
(10, '011242077793513596890', '2009-05-11', 13),
(12, '011242077793513596890', '2009-05-12',235),
(24, '011242077793513596890', '2009-05-13', 2),
(32, '011242077793513596890', '2009-05-14', 5),
(17, '011242077783866125432', '2009-05-12',165),
(22, '011242077783866125432', '2009-05-13', 2),
(30, '011242077783866125432', '2009-05-14', 5),
(19, '011242077743853330663', '2009-05-12', 61),
(20, '011242077737314753388', '2009-05-12', 54),
(28, '011242077737314753388', '2009-05-13', 7),
(36, '011242077737314753388', '2009-05-14', 31),
(14, '011242077730456603312', '2009-05-12',240),
(26, '011242077730456603312', '2009-05-13', 2),
(34, '011242077730456603312', '2009-05-14', 5);
Это то, что мне нужно было набрать на основе вашего снимка экрана!
Сделайте себе одолжение и сделайте так, чтобы людям было проще помочь вам.