Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2016, 16:02   #1
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
Стрелка Запрос в sql 2005 - SQL Server

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

Среднее могу получить так


Код:
SELECT     AVG(dbo.ТОВАРЫ.[Код производителя]) AS Среднее
FROM         dbo.[Справочник производителей] INNER JOIN
                       dbo.ТОВАРЫ ON dbo.[Справочник производителей].[Код производителя] = dbo.ТОВАРЫ.[Код производителя]
Либо таким вариантом

Код:
SELECT     SUM(dbo.ТОВАРЫ.[Код производителя]) / COUNT(dbo.ТОВАРЫ.[Код производителя]) AS Среднее
FROM         dbo.[Справочник производителей] INNER JOIN
                      dbo.ТОВАРЫ ON dbo.[Справочник производителей].[Код производителя] = dbo.ТОВАРЫ.[Код производителя]
Суть у них одна и та же. Но как вывести мне это все чудо?

Если сделать так

Код:
SELECT     dbo.[Справочник производителей].Производитель, dbo.[Справочник производителей].[Код производителя]
FROM         dbo.[Справочник производителей] INNER JOIN
                      dbo.ТОВАРЫ ON dbo.[Справочник производителей].[Код производителя] = dbo.ТОВАРЫ.[Код производителя]
WHERE     (dbo.[Справочник производителей].[Код производителя] > '4')
то все норм. Как мне сделать аналогичный вывод только без константы, то есть использовав указанное выше?

Например

Код:
SELECT     dbo.[Справочник производителей].Производитель, dbo.[Справочник производителей].[Код производителя]
FROM         dbo.[Справочник производителей] INNER JOIN
                      dbo.ТОВАРЫ ON dbo.[Справочник производителей].[Код производителя] = dbo.ТОВАРЫ.[Код производителя]
WHERE     (dbo.[Справочник производителей].[Код производителя] > AVG(dbo.ТОВАРЫ.[Код производителя]))

Так сделать нельзя, я так понимаю потому что разные типы возвращаются слева и справа от знака >

Как мне вывести ?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 31.03.2016, 16:10   #2
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

что то типо того
Код:
SELECT  dbo.[Справочник производителей].Производитель, dbo.[Справочник производителей].[Код производителя]
FROM    dbo.[Справочник производителей] 
INNER JOIN   dbo.ТОВАРЫ  ON  dbo.[Справочник производителей].[Код производителя] = dbo.ТОВАРЫ.[Код производителя]
WHERE     (dbo.[Справочник производителей].[Код производителя] > (SELECT     AVG(dbo.ТОВАРЫ.[Код производителя]) AS Среднее
                                                                                                    FROM         dbo.[Справочник производителей] INNER JOIN dbo.ТОВАРЫ 
                                                                                                    ON dbo.[Справочник производителей].[Код производителя] = dbo.ТОВАРЫ.[Код производителя])
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 31.03.2016 в 16:13.
Dvoishnik вне форума Ответить с цитированием
Старый 31.03.2016, 16:18   #3
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Код:
Error in ON clause near ')'.
Unable to parse query text.
Блин а где не хватает то, все же стоят вроде
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 31.03.2016, 16:21   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Первая после WHERE круглая открывающая скобка лишняя
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.03.2016, 16:22   #5
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

скобки в конце?
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 31.03.2016, 16:23   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
[Код производителя]
Вы не ошиблись, Вам нужен средний код производителя?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.03.2016, 16:26   #7
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Спасибо, выводит правильно, мне теперь интересен следующий вопрос, подскажите?

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
скобки в конце?
Да верно, а можете подсказать почему так стало?

Код:
SELECT     dbo.[Справочник производителей].Производитель, dbo.[Справочник производителей].[Код производителя]
FROM         dbo.[Справочник производителей] INNER JOIN
                      dbo.ТОВАРЫ ON dbo.[Справочник производителей].[Код производителя] = dbo.ТОВАРЫ.[Код производителя]
WHERE     (dbo.[Справочник производителей].[Код производителя] >
                          (SELECT     AVG(ТОВАРЫ_1.[Код производителя]) AS Среднее
                            FROM          dbo.[Справочник производителей] AS [Справочник производителей_1] INNER JOIN
                                                   dbo.ТОВАРЫ AS ТОВАРЫ_1 ON [Справочник производителей_1].[Код производителя] = ТОВАРЫ_1.[Код производителя]))

то есть _1 интересует, подскажите?

Последний раз редактировалось a.n.o.n.i.m; 31.03.2016 в 16:32.
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 31.03.2016, 16:37   #8
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от a.n.o.n.i.m Посмотреть сообщение
Спасибо, выводит правильно, мне теперь интересен следующий вопрос, подскажите?

Да верно, а можете подсказать почему так стало?

то есть _1 интересует, подскажите?
простите что??
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 31.03.2016, 17:01   #9
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

ну дописалось с ТОВАРЫ на ТОВАРЫ_1 , вот _1 почему?
a.n.o.n.i.m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ms SQL server 2005 ? Иван g Помощь студентам 2 14.12.2015 12:25
MS SQL SERVER 2005 sql querry reihtmonbern БД в Delphi 18 26.08.2012 17:06
запрос в SQL server 2005 студенточка! Помощь студентам 0 17.12.2011 23:15
Запрос sql server 2005 Progsenya SQL, базы данных 1 16.01.2011 20:30
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09