Learning SQL coding techniques

I am also looking for another coding example for this. I learn best by code examples. Any help would be greatly appreciated. I have tried several different ways but I would love to see how an experienced Pro would do this.
Thanks.

Given the following tables and sample data:

create table  Company           ( CompanyID int, CompanyName varchar(30) )
          insert Company values (1,                         'Acme Construction')
          insert Company values (2,                         'AAA Buildings')

create table  Item            ( ItemID int, ItemName varchar(10), UnitCost money )
           insert Item values ( 1,                'Widget',                        1.00)   -- each unit $1
           insert Item values ( 2,                'Sprocket',                      2.00)   -- each unit $2

create table ItemOrder            ( ItemOrderID int, CompanyID int, ItemID int, OrderDate datetime, UnitsOrdered int )
-- Acme orders 3 widgets on 10/5
          insert ItemOrder values ( 1,                            1,                         1,             '10/5/05',                     3 )
-- AAA Buildings orders 1 sprocket on 11/1
          insert ItemOrder values ( 2,                             2,                         2,             '11/1/05',                    1 )

My manager says: ""I want to know, for every company and item combination, the following
information: total orders, total units ordered, total cost of units ordered, first order date,
and last order date.

The result set should be:
 CompanyName, ItemName, TotalOrders, TotalUnitsOrdered, TotalOrderCost, FirstOrderDate, LastOrderDate
Write the SQL for this.
tesla764Asked:
Who is Participating?
 
infolurkConnect With a Mentor Commented:
Select c.CompanyName, i.ItemName, Count(o.ItemOrderID) as TotalOrders, Sum(o.UnitsOrdered) as TotalUnitsOrdered,
Sum(o.UnitsOrdered) * i.UnitCost as TotalOrderCost
from Company c
join
ItemOrder o
on c.CompanyId = o.CompanyID
Join
Item i
on o.ItemID = i.ItemID
Group By CompanyName, ItemName, TotalOrders, TotalUnitsOrdered, TotalOrderCost
Order By CompanyName, Itemname

Will get you started. The date fields will need subquerys as they need to be filtered for min and max values within the unit types.
0
 
dougaugConnect With a Mentor Commented:
select c.CompanyName,
       i.ItemName,
       COUNT(*) as TotalOrders,
       SUM(io.UnitsOrdered) as TotalUnitsOrdered,
       SUM(io.UnitsOrdered) * i.UnitCost as TotalOrderCost,
       MIN(io.OrderDate) as FirstOrderDate,
       MAX(io.OrderDate) as LastOrderDate
       
  from Company c join ItemOrder io on c.CompanyID = io.CompanyID
                 join Item i on io.ItemID = i.ItemID

group by  c.CompanyName, i.ItemName, i.UnitCost
0
 
tesla764Author Commented:
Thanks again. This has been very interesting and Helpful.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.