Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 объединение таблиц, вложенный запрос, агрегатные функции  [new]
juliaSt
Member

Откуда:
Сообщений: 59
Есть таблица заказов Oreders, в которой есть номера заказов и продавцов, у которых несколько заказов у каждого


OrderID EmployeeID
1000 1
1001 3
1002 1
1003 2


И есть таблица продавцов Employees с именами и номерами продавцов


EmployeeID FirstName LastName
1 Lisa Lansen
2 Jek Mo
3 David Brown

Необходимо получить 2 колонки Seller(конкатенация FirstName и LastName) и количество его заказов по убыванию количества.

Получилось объединить таблицы и получить во внутреннем запросе номера заказов OrderID, номера продавцов EmployeeID и конкатенации их имен. SQL Server ругается на синтаксис, хотя вроде все верно, но Z.Seller он не понимает. Ребят подскажите,что не так?

SELECT Z.Seller,COUNT(Z.OrderID) AS Amount
FROM 
	 (SELECT o.OrderID, e.EmployeeID,LastName+' '+FirstName AS Seller
	  FROM NORTHWIND.dbo.Employees e, NORTHWIND.dbo.Orders o
	  WHERE e.EmployeeID=o.EmployeeID )Z
GROUP BY Z.EmployeeID
ORDER BY COUNT(Z.OrderID) DESC
15 июн 12, 12:25    [12718918]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц, вложенный запрос, агрегатные функции  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
juliaSt, как вариант
+

with zz
as
(
select count(*) as OrdQty,EmployeeID
from Oreders
group by EmployeeID
)
select LastName+' '+FirstName AS Seller
,z.OrdQty
from zz z
inner join Employees  e on e.EmployeeID = z.EmployeeID
order by z.OrdQty desc


хотя если NORTHWIND может и не подойти.версия сервера какая
15 июн 12, 12:35    [12719005]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц, вложенный запрос, агрегатные функции  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
juliaSt,

  select e.FirstName+' '+e.LastName as saller, COUNT(o.OrderID) as ammount
  from Orders o join Employees  e on o.EmployeeID = e.EmployeeID
  group by e.FirstName+' '+e.LastName
  order by COUNT(o.OrderID) desc
15 июн 12, 12:37    [12719024]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц, вложенный запрос, агрегатные функции  [new]
juliaSt
Member

Откуда:
Сообщений: 59
denis2710, SQL Server 2005
15 июн 12, 12:37    [12719027]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц, вложенный запрос, агрегатные функции  [new]
juliaSt
Member

Откуда:
Сообщений: 59
Baddy, спасибо, но требуется вложенный запрос юзать
15 июн 12, 12:40    [12719060]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц, вложенный запрос, агрегатные функции  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
juliaSt
Baddy, спасибо, но требуется вложенный запрос юзать

задлянафига?
15 июн 12, 12:42    [12719085]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц, вложенный запрос, агрегатные функции  [new]
juliaSt
Member

Откуда:
Сообщений: 59
Baddy,
Вот так, сортировать надо было по имени

SELECT Z.Seller,COUNT(Z.OrderID) AS Amount
FROM 
	 (SELECT o.OrderID, e.EmployeeID,LastName+' '+FirstName AS Seller
	  FROM NORTHWIND.dbo.Employees e, NORTHWIND.dbo.Orders o
	  WHERE e.EmployeeID=o.EmployeeID )Z
GROUP BY Z.Seller
ORDER BY Amount DESC


Все ок!
Спасибо:)
15 июн 12, 12:43    [12719095]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц, вложенный запрос, агрегатные функции  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
это чем-то не устаревает 12719005?

+ вид в профиль

select LastName+' '+FirstName AS Seller
,z.OrdQty
from (
select count(*) as OrdQty,EmployeeID
from Oreders
group by EmployeeID
) z
inner join Employees  e on e.EmployeeID = z.EmployeeID
order by z.OrdQty desc

15 июн 12, 12:44    [12719107]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц, вложенный запрос, агрегатные функции  [new]
juliaSt
Member

Откуда:
Сообщений: 59
denis2710, устраивает как альтернатива и короче он и понятней, но по заданию с вложенным:)
15 июн 12, 12:49    [12719149]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц, вложенный запрос, агрегатные функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
juliaSt
denis2710, устраивает как альтернатива и короче он и понятней, но по заданию с вложенным:)
Спойлер-то хоть открывали?
Нерекурсивное CTE - слегка обобщённая разновидность производной таблицы
(её Вы предпочитаете называть "вложенным запросом").
15 июн 12, 12:54    [12719180]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить