#sqlite
Вопрос:
У меня есть подсказка Write a query to extract the item names for items that were above average order total. Return the item names in alphabetical order
.
Таблицы выглядят так
orders
------
PK |OrderID
-----------
FK | item id
| qty
| totla
и
items
------
PK | ItemID
-----------
| name
| value
На первый взгляд ответ будет выглядеть так,
SELECT name
FROM items
WHERE value > (
SELECT avg(total) FROM orders
)
ORDER BY 1 ASC;
Но потом я понял, что мне нужно взять среднее значение по всем позициям в заказе, а не среднее значение по всем итоговым данным.
Моя лучшая идея на данный момент-это
SELECT name
FROM items
WHERE value > (
SELECT avg(grp_tot) FROM (
SELECT avg(total) AS grp_tot FROM orders GROUPBY orderid
))
ORDER BY 1 ASC;
Но, похоже, должно быть лучшее решение, чем это