Вопрос

Я хочу сделать запрос, чтобы получить список кошек, продажа которых заняла больше времени, чем у обычных кошек?У меня есть пять таблиц:

Animal, Sale, AnimalOrderItem, AnimalOrder и SaleAnimal

Таблица животных:AnimalId, название, категория (кошка, собака, рыба)

РаспродажаСтол для животных:Saleid, AnimalId, SalePrice

Таблица продажи:Sailid, date, employeeid, customerid

Таблица AnimalOrderItem:OrderId, AnimalId, стоимость

AnimalOrder:OrderId, OrderDate, DecivingDate, PulfierID, ShippingCost, Employeeid

Есть и другие таблицы, я не думаю, что они влияют на запрос.

Я подумал о следующем...сделайте запрос, чтобы рассчитать дни продажи для всех примеров:

[SaleDate]-[ReceiveDate] AS DaysToSell
Have the INNER JOIN built:
Sale INNER JOIN ((AnimalOrder INNER JOIN (Animal INNER JOIN AnimalOrderItem
ON Animal.AnimalID = AnimalOrderItem.AnimalID) ON AnimalOrder.
OrderID = AnimalOrderItem.OrderID) INNER JOIN SaleAnimal ON Animal.
AnimalID = SaleAnimal.AnimalID) ON Sale.SaleID = SaleAnimal.SaleID

Создайте еще один запрос на основе приведенного выше запроса.

SELECT AnimalID, Name, Category, DaysToSell
WHERE Category="Cat" AND DaysToSell>
(SELECT Avg(DaysToSell)
FROM the earlier query
WHERE Category="Cat"
ORDER BY DaysToSell DESC;

После выполнения запроса я получил сообщение об ошибке

ОРА-00921:неожиданный конец команды SQL

Какие-либо предложения!пожалуйста

Это было полезно?

Решение

Запросы можно комбинировать с подзапросом.Например,

select *
from (
    select * 
    from mytable
) subquery

Применение этого шаблона к вашей проблеме кажется довольно простым.

Другие советы

Я не вижу закрытой скобки, соответствующей выбранному среднему значению.

Хорошо, я придумал это:

    SELECT AnimalID, Name, Category,
           [SaleDate]-[ReceiveDate] AS DaysToSell
    FROM   Sale INNER JOIN ((AnimalOrder INNER JOIN (Animal INNER JOIN AnimalOrderItem ON Animal.AnimalID = AnimalOrderItem.AnimalID) ON AnimalOrder.OrderID = AnimalOrderItem.OrderID)
           INNER JOIN SaleAnimal ON Animal.AnimalID = SaleAnimal.AnimalID) ON Sale.SaleID = SaleAnimal.SaleID
    WHERE  Category = "Cat"
    AND    ([SaleDate]-[ReceiveDate]) > (SELECT AVG([SaleDate]-[ReceiveDate])
                                         FROM   Sale INNER JOIN ((AnimalOrder INNER JOIN (Animal INNER JOIN AnimalOrderItem ON Animal.AnimalID = AnimalOrderItem.AnimalID) ON AnimalOrder.OrderID = AnimalOrderItem.OrderID)
                                         INNER JOIN SaleAnimal ON Animal.AnimalID =SaleAnimal.AnimalID) ON Sale.SaleID = SaleAnimal.SaleID
                                         WHERE Category = "Cat")
    ORDER BY ([SaleDate]-[ReceiveDate]) DESC;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top