Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 31.03.2016, 17:02   #1
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 213
Репутация: 10
Стрелка Запрос в 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, 17:10   #2
Dvoishnik
Участник клуба
 
Регистрация: 12.02.2011
Сообщений: 803
Репутация: 295
По умолчанию

что то типо того
Код:

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 в 17:13.
Dvoishnik вне форума   Ответить с цитированием
Старый 31.03.2016, 17:18   #3
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 213
Репутация: 10
По умолчанию

Код:

Error in ON clause near ')'.
Unable to parse query text.

Блин а где не хватает то, все же стоят вроде
a.n.o.n.i.m вне форума   Ответить с цитированием
Старый 31.03.2016, 17:21   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 16,679
Репутация: 5909
По умолчанию

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

скобки в конце?
Dvoishnik вне форума   Ответить с цитированием
Старый 31.03.2016, 17:23   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 22,600
Репутация: 5062
По умолчанию

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

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

Цитата:
Сообщение от 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 в 17:32.
a.n.o.n.i.m вне форума   Ответить с цитированием
Старый 31.03.2016, 17:37   #8
Dvoishnik
Участник клуба
 
Регистрация: 12.02.2011
Сообщений: 803
Репутация: 295
По умолчанию

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

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

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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ms SQL server 2005 ? Иван g Помощь студентам 2 14.12.2015 13: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 21:30
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09




09:46.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru