Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > очередной вопрос по запросу


Автор: 4ybaka 17.10.2007, 22:50
нужно вывести таблицу следующего плана:
Цитата

Seller  Customer  Amount
ALL    ALL    <общее число продаж>
<имя>  ALL    <число продаж для данного продавца>
ALL  <имя>    <число продаж для данного покупателя>
<имя>  <имя>    <число продаж данного продавца для даннного покупателя>

так вот все,кроме первых 3х строчек получилось:
Код

select (select FirstName from Employees where Employees.EmployeeID=Orders.EmployeeID) as Seller,
        (select CompanyName from Customers where Customers.CustomerID=Orders.CustomerID) as Customer,
        count(EmployeeID) as Amount
        from Orders where datepart (year, OrderDate)=1998 
        group by EmployeeID,CustomerID 
        order by Seller,Customer,Amount desc

но вот как вывести первые 3 мыслей вообще никаких нет(если учесть,что тема задания - "Явное соединение таблиц, самосоединения, использование агрегатных функций и предложений GROUP BY и HAVING").
подскажите или киньте ссылку,где можно почитать по поводу подобного использования вышеуказанных вещей...

Автор: Servena 18.10.2007, 06:59
Что значит АЛЛ ?

Автор: kobra 18.10.2007, 08:46
UNION
четыре запроса обедененные UNION-ом

Автор: Servena 18.10.2007, 08:52
Что-то я все равно не пойму задание. Может быть кто-то подробнее опишет или растолкует?

Автор: Servena 18.10.2007, 10:22
Вот тебе первые три части:
Код

SELECT 'ALL'AS Seller, 'ALL'AS Customer, COUNT(*) AS Amount
FROM Orders AS o
UNION ALL
SELECT e.FirstName+' '+e.LastName AS Seller, 'ALL'AS Customer, COUNT(e.FirstName) AS Amount
FROM Employees AS e
      INNER JOIN Orders AS o
      ON e.EmployeeID=o.EmployeeID
GROUP BY e.FirstName+' '+e.LastName
UNION ALL
SELECT 'ALL'AS Seller, c.ContactName AS Customer, COUNT(c.ContactName) AS Amount
FROM Customers AS c
      INNER JOIN Orders AS o
      ON c.CustomerID=o.CustomerID
GROUP BY c.ContactName

Как обычно, используется БД Northwind, проверить можно - подбив суму. Сумы должны быть равны числу в самом первом рядке.

Автор: 4ybaka 18.10.2007, 19:50
с юнионом это конечно хорошо,но вот тема задания была
Цитата(4ybaka @  17.10.2007,  22:50 Найти цитируемый пост)
Явное соединение таблиц, самосоединения, использование агрегатных функций и предложений GROUP BY и HAVING

те это нужно реализовать какимто боком без union(это задание находится до темы union....)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)