vic91
Дата: 18.02.2013 18:26:28
Доброго времени суток!
мне нужно составить отчет в котором выводится минимальный заказ за каждую дату(дата из таблицы orders). заказ рассчитывается как сумма стоимостей продуктов, входящих в заказ, в свою очередь стоимость продукта вычисляется как цена за единицу*количество минус дисконт.(sum(unitprice*quantity-discount/100)) (из таблицы order details)
Вывела только заказы за каждую дату, а как минимаьный выбрать не знаю
select orders.orderid,orderdate,(sum(unitprice*quantity-discount/100))as orderprice
from orders, [order details]
where ([order details].orderid=orders.orderid)
group by orders.orderid, orderdate
Паганель
Дата: 18.02.2013 18:33:22
Рекомендую поговорить с Вашим сотрудником, который проектировал БД,
может, "итого" по заказу лучше хранить а не считать постоянно на лету?
Маслов Андрей
Дата: 18.02.2013 18:38:07
vic91,
всё писать не интересно, думайте
но в качестве бонуса код, который считает сумму по каждому заказа с учётом скидки
select t1.OrderID, sum(UnitPrice * Quantity * (1 -Discount) )
from Orders t1
inner join OrderDetails t2
on t1.OrderID = t2.OrderID
group by t1.OrderID
Маслов Андрей
Дата: 18.02.2013 18:42:40
ну и так, если по быстрому
select t3.OrderDate, min(ds.OrderSum)
from Orders t3
inner join (
select t1.OrderID, sum(UnitPrice * Quantity * (1 -Discount) ) as OrderSum
from Orders t1
inner join OrderDetails t2
on t1.OrderID = t2.OrderID
group by t1.OrderID ) ds
on ds.OrderID = t3.OrderID
group by t3.OrderDate