Я пытался создать один SQL-запрос, чтобы вернуть то, что мне нужно, вместо создания 2 запросов, но мне нужно использовать результат одного из запросов как offset
другого.Как использовать результат выбора в качестве смещения в SQL-запросе
В моей таблице есть ответы пользователей с оценками, каждый пользователь может иметь несколько ответов в этой таблице. И я хочу рассчитать среднюю точку таблицы упорядоченных баллов.
Пример:
пользователь отвечает:
- пользователя 15 баллов
- пользователя 1 - 15 баллов
- пользователя 2 - 8 баллов
- пользователя 3 - 12 баллов
таблица рейтинга:
- пользователя 1 - 20 баллов
- пользователя 3 - 12 баллов < средняя точка
- пользователя 2 - 8 баллов
Решение:
Первый запрос вычисляет среднюю точку:
SELECT CEILING(count(Distinct(id_user))/2) as position
FROM us_user_response
where id_round=1
Результат запроса:
позиций: 2
Этот второй запрос создает упорядоченную таблица рейтинга:
SELECT sum(points) as score
FROM us_user_response
where id_round=1
GROUP BY id_user
Order by score DESC
Теперь я хочу создать одно би г-запрос, который возвращает оценку среднего пользователя, мне просто нужно использовать первый результат запроса в качестве offset
второго запроса:
SELECT sum(points) as score
FROM us_user_response
where id_round=1
GROUP BY id_user
Order by score DESC LIMIT 1
OFFSET (SELECT CEILING(count(Distinct(id_user))/2) as position
FROM us_user_response where id_round=1)
Конечно, это не работает, есть ли способ, чтобы использовать результат как offset
?
EDIT:
Запросы работают хорошо! Мой вопрос в том, есть ли способ использовать результат запроса как смещение другого. Поэтому я мог бы выполнить это в одном запросе.
Не можете также выбрать свой идентификатор пользователя, а затем использовать это? – Jessica
Мне нужен средний балл ... единственный способ получить это, чтобы получить средний элемент упорядоченной таблицы ... –
Запросы работают просто отлично! Я просто хотел взять два запроса и создать только один. Используя первый как смещение второго запроса. –