Прежде всего, я просто предупреждаю всех, что я что-то новичок в MySQL. Кроме того, я не тестировал примерные запросы ниже, чтобы они не были идеальными.MySQL - Получить строку и среднее количество строк
В любом случае, у меня есть таблица предметов, каждая из которых имеет название, категорию и оценку. Каждые 12 часов верхний элемент берется, используется, а затем удаляется.
До сих пор я просто был захватывая верхний элемент с
SELECT * FROM items_table ORDER BY score DESC LIMIT 1
Единственная проблема с этим состоит в том, что некоторые категории являются предвзятыми и как правило, имеют более высокие баллы. Я бы хотел решить это, сортируя по шкале, деленной на средний балл, а не просто сортируя по партитуре. Что-то вроде
ORDER BY score/(GREATEST(5,averageScore))
Я сейчас пытаюсь найти лучший способ найти среднее значение. У меня есть еще один стол для категорий так очевидно, что я мог бы добавить столбец averageScore к тому, что и запустить cronjob держать их в курсе и получить их с чем-то вроде
SELECT * FROM items_table, categories_table WHERE items_table.category = categories_table.category ORDER BY items_table.score/(GREATEST(5,categories_table.averageScore)) DESC LIMIT 1
, но это чувствует себя грязным. Я знаю, что могу найти все средние, используя что-то вроде
SELECT AVG(score) FROM items_table GROUP BY category
Что мне интересно, если есть какой-то способ, чтобы получить средние значения прямо в одном запросе.
Спасибо,
YM
«Я что-то новобранец с MySQL», что вы имеете в виду новобранец? – Imran
@imran: https://www.google.co.uk/search?q=define%3Arookie – eggyal
Я использую его около 3 лет, но я сам преподаю и только узнал о нормализованных базах данных около 6 месяцев назад , –