У меня есть реляционная база данных для приложения Burger Building, которое использует ресторан.Две таблицы, содержащиеся в БД: Category
и Item
.Они используются для отображения категорий, а затем клиент может выбрать категорию (EG Buns), просмотреть всех детей, содержащихся в этой категории, и выбрать, каких из них добавить в свой заказ.Две таблицы связаны с помощью поля с именем CategoryID
.
База данных элементов содержит среди многих следующие поля: ItemID
, ItemName
, TimesOrdered
, CategoryID
.
Одной из необходимых функций является просмотр товара, который был заказан наиболее (самый популярный) в каждой категории.Это можно получить из поля TimesOrdered
.Однако, если два предмета были заказаны одинаковое количество раз, то технически нет ни одного предмета в этой категории, который был бы заказан чаще всего.
Поэтому, самое большое поле TimesOrdered
нужно будет сравнитьво второе по величине поле TimesOrdered
, чтобы определить, было ли заказано больше всего товаров для этой категории.
Есть ли способ добиться этого с помощью SQL?Например, показ ItemID
для каждой категории (с использованием группировки по CategoryID), который был заказан чаще всего, если заказанный товар второй по величине заказан меньше раз, чем товар, который был заказан чаще всего.
Я знаю, что это, очевидно, можно сделать, просто просмотрев первые два элемента и сравнив поле TimesOrdered
второй записи с полем TimesOrdered
первой записи, но это вызов и способ улучшить мой SQLЕсть ли какой-либо способ получить желаемые результаты с помощью одного оператора SQL?
Заранее спасибо за любые ответы :)