0 / 0 / 0
Регистрация: 14.09.2017
Сообщений: 7
1

Доделать запрос sql managment studio 2017

12.03.2018, 17:40. Показов 892. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно вывести тех фотографов, у которых среднее заработанное за январь больше, чем за весь год. Я сделал только за январь, надо помочь вложить запрос и сравнить их. Помогите пожалуйста.

T-SQL
1
2
3
4
5
Select top(1)Photographers_Table.LastName,Photographers_Table.Name,Photographers_Table.Patronymic, Orders.Photographers_ID as id, AVG(Value) as Value 
From Orders JOIN Photographers_Table ON Orders.Photographers_ID=Photographers_Table.Photographers_ID 
where month(Orders.Date)=1 
GROUP BY Orders.Photographers_ID, Photographers_Table.LastName,Photographers_Table.Name,Photographers_Table.Patronymic 
Order by AVG(Value)desc
Столбцы:
.Дата(Date)
.Стоимость(Value)
.Код заказа(Orders_ID)
.Код клиента(Clients_ID)
.Код фотографа(Photographers_ID)
.Продолжительность(Duration)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2018, 17:40
Ответы с готовыми решениями:

написать запрос в sql managment studio, выборки
Одна группа изучает несколько дисциплин и одна дисциплина может преподавать- ся нескольким...

sql managment studio управление представлениями
Добрый день такой вопрос. Можно ли в менеджмент студио в редакторе представлений интерфейсно...

Составитьте процедуру в SQL Managment Studio
Разработайте программу, итеративно уменьшающую вместимость всех аудиторий на 5% за итерацию до тех...

Ни в какую не ставится Sql Server Managment Studio
Ребят, я замучился уже, честное слово... Чистая винда (7ая ультиматум), чистый Visual Studio...

11
5088 / 4102 / 1026
Регистрация: 29.08.2013
Сообщений: 25,993
Записей в блоге: 3
12.03.2018, 17:56 2
зачем ты выводишь кучу полей если у тебя сказано что нужно вывести только фотографов?

Цитата Сообщение от khlebov14 Посмотреть сообщение
надо помочь вложить запрос и сравнить их
делай как делал - JOIN (тут повтори свой запрос только выведи id и среднее за год) t
0
0 / 0 / 0
Регистрация: 14.09.2017
Сообщений: 7
12.03.2018, 17:58  [ТС] 3
я вывожу фамилию имя и отчество и сколько он в среднем заработал, а по поводу JOIN я не понимаю куда его вставить...
0
5088 / 4102 / 1026
Регистрация: 29.08.2013
Сообщений: 25,993
Записей в блоге: 3
12.03.2018, 18:18 4
Цитата Сообщение от khlebov14 Посмотреть сообщение
а по поводу JOIN я не понимаю куда его вставить...
можно туда же куда и первый join

SQL
1
2
3
4
5
6
7
8
9
10
11
SELECT top(1)Photographers_Table.LastName
,Photographers_Table.Name
,Photographers_Table.Patronymic
, Orders.Photographers_ID AS id
, AVG(VALUE) AS VALUE 
FROM Orders 
JOIN Photographers_Table ON Orders.Photographers_ID=Photographers_Table.Photographers_ID 
JOIN (тут твой запрос) t ON t.id=Orders.Photographers_ID
WHERE MONTH(Orders.Date)=1 
GROUP BY Orders.Photographers_ID, Photographers_Table.LastName,Photographers_Table.Name,Photographers_Table.Patronymic 
ORDER BY AVG(VALUE)DESC
можно двумя подзапросами
SQL
1
2
3
4
SELECT
FROM Orders 
JOIN (тут среднее за месяц)
JOIN (тут среднее за год)
0
0 / 0 / 0
Регистрация: 14.09.2017
Сообщений: 7
12.03.2018, 18:31  [ТС] 5
Так? Выделяет второй JOIN
SQL
1
2
3
4
5
6
7
8
9
10
11
SELECT *
FROM Orders 
JOIN (SELECT top(1)Photographers_Table.LastName,Photographers_Table.Name,Photographers_Table.Patronymic, Orders.Photographers_ID AS id, AVG(VALUE) AS VALUE 
FROM Orders JOIN Photographers_Table ON Orders.Photographers_ID=Photographers_Table.Photographers_ID 
WHERE MONTH(Orders.Date)=1 
GROUP BY Orders.Photographers_ID, Photographers_Table.LastName,Photographers_Table.Name,Photographers_Table.Patronymic 
ORDER BY AVG(VALUE)DESC)
JOIN (SELECT top(1)Photographers_Table.LastName,Photographers_Table.Name,Photographers_Table.Patronymic, Orders.Photographers_ID AS id, AVG(VALUE) AS VALUE 
FROM Orders JOIN Photographers_Table ON Orders.Photographers_ID=Photographers_Table.Photographers_ID  
GROUP BY Orders.Photographers_ID, Photographers_Table.LastName,Photographers_Table.Name,Photographers_Table.Patronymic 
ORDER BY AVG(VALUE)DESC)
0
5088 / 4102 / 1026
Регистрация: 29.08.2013
Сообщений: 25,993
Записей в блоге: 3
12.03.2018, 18:48 6
Цитата Сообщение от khlebov14 Посмотреть сообщение
Так?
я написал как

Цитата Сообщение от khlebov14 Посмотреть сообщение
Выделяет второй JOIN
конечно выделяет, условие в запросе может быть только одно, как и группировка и сортировка

попробуйте отвлечься от вашего задания и просто соединить 2 таблицы,потом добавьте условие, потом группировку
0
3332 / 2037 / 727
Регистрация: 02.06.2013
Сообщений: 5,011
12.03.2018, 19:52 7
khlebov14, прежде чем плодить джойны, нужно немного подумать:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
with o as
(
 select
  year([Date]) as [year],
  Photographers_ID,
  avg(value) as avg_by_year
 from
  Orders
 group by
  year(Date),
  Photographers_ID
 having
  avg(value) < avg(case when month([Data]) = 1 then value end)
)
SELECT
 Photographers_Table.LastName,
 vPhotographers_Table.Name,
 Photographers_Table.Patronymic,
 Orders.Photographers_ID AS id,
 o.avg_by_year 
FROM
 o 
 JOIN Photographers_Table p ON o.Photographers_ID = p.Photographers_ID;
0
0 / 0 / 0
Регистрация: 14.09.2017
Сообщений: 7
13.03.2018, 21:48  [ТС] 8
invm, Находит ошибку
Миниатюры
Доделать запрос sql managment studio 2017  
0
3332 / 2037 / 727
Регистрация: 02.06.2013
Сообщений: 5,011
13.03.2018, 23:03 9
khlebov14, а подставить правильное наименование столбца совсем никак?
0
0 / 0 / 0
Регистрация: 14.09.2017
Сообщений: 7
15.03.2018, 20:02  [ТС] 10
invm,Как смог, честно, плохо разбираюсь, но нужно сдать в субботу, прошу помощи
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
WITH o AS
(
 SELECT
  YEAR([DATE]) AS [YEAR],
  Photographers_ID,
  avg(VALUE) AS avg_by_year
 FROM
  Orders
 GROUP BY
  YEAR(DATE),
  Photographers_ID
 HAVING
  avg(VALUE) < avg(CASE WHEN MONTH(DATE) = 1 THEN VALUE END)
)
SELECT
 Photographers_Table.LastName,
 Photographers_Table.Name,
 Photographers_Table.Patronymic,
 Orders.Photographers_ID AS id,
 o.avg_by_year 
FROM
 O, dbo.Photographers_Table, Orders
 JOIN Photographers_Table p ON orders.Photographers_ID = p.Photographers_ID;
0
5088 / 4102 / 1026
Регистрация: 29.08.2013
Сообщений: 25,993
Записей в блоге: 3
15.03.2018, 21:01 11
khlebov14, дорабатывай свой запрос
лучше сделать как понимаешь, чем как подсказывают, но который ты не понимаешь
0
3332 / 2037 / 727
Регистрация: 02.06.2013
Сообщений: 5,011
15.03.2018, 22:15 12
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
WITH o AS
(
 SELECT
  YEAR([DATE]) AS [YEAR],
  Photographers_ID,
  avg(VALUE) AS avg_by_year
 FROM
  Orders
 GROUP BY
  YEAR(DATE),
  Photographers_ID
 HAVING
  avg(VALUE) < avg(CASE WHEN MONTH(DATE) = 1 THEN VALUE END)
)
SELECT
 p.LastName,
 p.Name,
 p.Patronymic,
 o.Photographers_ID AS id,
 o.avg_by_year 
FROM
 o
 JOIN Photographers_Table p ON o.Photographers_ID = p.Photographers_ID;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2018, 22:15
Помогаю со студенческими работами здесь

SQL Managment Studio(18.2) ядро СУБД много серверов и ни один не запускается
Дело в том, что я уже раньше устанавливал SQL Managment Studio, не помню какой версии и скачивал...

Создание новой информационной базы в MS SQL server Managment Studio 2005
Как создать в MS SQL Server Managment Studio 2005 новую информационную базу 1с? На данный момент...

Как открыть БД больше 10240 Мб (SQL Managment Studio 2008 Express)?
Помогите подключить бд больше 10240 установлена sql managment studio 2008 express при соединении...

SQL Managment Studio 2008 выдает ошибку при попытке создать таблицу
SQL Managment Studio 2008 при попытке создать таблицу появляется ошибка: &quot;данная серверная версия...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru