У меня есть база данных для приложения чата.
CREATE TABLE Users (uid int PRIMARY KEY, name text, phone text );
CREATE TABLE Messages (recipient int REFERENCES Users(uid), sender int
REFERENCES Users(uid), time timestamp NOT NULL, message text NOT NULL,
PRIMARY KEY (recipient, sender, time));
http://www.sqlfiddle.com/#!9/bd36d1
Я хочу определить для каждого из 5 пользователей, отправивших наибольшее количество сообщений, среднюю длину сообщений, отправленных этим пользователем.
Я написал следующий запрос:
SELECT avg(strlen(message))
FROM Messages
WHERE sender IN
(SELECT *
FROM (SELECT sender, COUNT(sender) AS NumberOfMessages
FROM Messages
GROUP BY sender) AS MessagesPerSender
ORDER BY NumberOfMessages DESC
LIMIT 5)
Для начала, правильный ли это запрос? Это дает мне желаемый результат? Проблема в том, что я не могу его запустить, потому что я получаю сообщение об ошибке:
"Эта версия MySQL еще не поддерживает подзапрос LIMIT & IN / ALL / ANY / SOME"