Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
Подскажите вариант запроса !!!
вот к такому заданию :
Удалите информацию обо всех аудиториях, вместимость которых превышает на 10 % среднюю вместимость аудиторий!
Поясню есть таблица
[img=C:\Users\Maksim\Desktop\Снимок.PNG]
в таблице есть столбец где указано количество аудиторий вот нужно чтоб посчитало их среднее количество , а затем сравнило с результатом и удалило те которые превышают на 10 % среднюю вместимость!
19 май 14, 15:27    [16037313]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
IrbisMaks, Возможно кто не увидит таблицы вот код которым я создал саму таблицу
CREATE TABLE AUDITORIUM
(
AUDITORIUM CHAR(10)CONSTRAINT AUDITORIUM_PK PRIMARY KEY not null,
AUDITORIUM_NAME VARCHAR (200) null,
AUDITORIUM_CAPACITY INTEGER default 1,
AUDITORIUM_TYPE CHAR (10) CONSTRAINT AUDITORIUM_AUDITORIUM_TYPE_FK foreign key references AUDITORIUM_TYPE(AUDITORIUM_TYPE),
)
INSERT INTO AUDITORIUM (AUDITORIUM,AUDITORIUM_NAME,AUDITORIUM_CAPACITY,AUDITORIUM_TYPE)
VALUES('103-4','103-4','80','ЛК')
INSERT INTO AUDITORIUM (AUDITORIUM,AUDITORIUM_NAME,AUDITORIUM_CAPACITY,AUDITORIUM_TYPE)
VALUES('105-4','105-4','80','ЛК')
INSERT INTO AUDITORIUM (AUDITORIUM,AUDITORIUM_NAME,AUDITORIUM_CAPACITY,AUDITORIUM_TYPE)
VALUES('107-4','107-4','80','ЛК')
INSERT INTO AUDITORIUM (AUDITORIUM,AUDITORIUM_NAME,AUDITORIUM_CAPACITY,AUDITORIUM_TYPE)
VALUES('110-4','110-4','80','ЛК')
INSERT INTO AUDITORIUM (AUDITORIUM,AUDITORIUM_NAME,AUDITORIUM_CAPACITY,AUDITORIUM_TYPE)
19 май 14, 15:30    [16037340]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
Кавказ-сила
Member

Откуда: Москва
Сообщений: 261
IrbisMaks
[img=C:\Users\Maksim\Desktop\Снимок.PNG]
IrbisMaks
Возможно кто не увидит таблицы
19 май 14, 15:33    [16037376]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
TempFox
Guest
А каким запросом можно узнать среднюю вместимость всех аудиторий?
19 май 14, 15:34    [16037381]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
Кавказ-сила, смешно прям оборжатся можно, а толку то от такого ответа ноль, совета ни какого!

К сообщению приложен файл. Размер - 8Kb
19 май 14, 15:36    [16037397]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
Кавказ-сила
Member

Откуда: Москва
Сообщений: 261
select *
from AUDITORIUM a1
where a1.AUDITORIUM_CAPACITY > 1.1 * (select avg(a2.AUDITORIUM_CAPACITY)
from AUDITORIUM a2)
19 май 14, 15:37    [16037403]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
IrbisMaks
совета ни какого!


http://firststeps.ru/sql/sql1.html
19 май 14, 15:37    [16037405]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
как вариант
SELECT AUDITORIUM_TYPE AS Тип_аудитории, sum([AUDITORIUM_CAPACITY])as Вместимость
FROM AUDITORIUM
group by AUDITORIUM_TYPE
COMPUTE AVG(SUM([AUDITORIUM_CAPACITY]))
19 май 14, 15:38    [16037412]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
Кавказ-сила
Member

Откуда: Москва
Сообщений: 261
IrbisMaks
IrbisMaks, Возможно кто не увидит таблицы вот код которым я создал саму таблицу
CREATE TABLE AUDITORIUM
(
AUDITORIUM CHAR(10)CONSTRAINT AUDITORIUM_PK PRIMARY KEY not null,
AUDITORIUM_NAME VARCHAR (200) null,
AUDITORIUM_CAPACITY INTEGER default 1,
AUDITORIUM_TYPE CHAR (10) CONSTRAINT AUDITORIUM_AUDITORIUM_TYPE_FK foreign key references AUDITORIUM_TYPE(AUDITORIUM_TYPE),
)
INSERT INTO AUDITORIUM (AUDITORIUM,AUDITORIUM_NAME,AUDITORIUM_CAPACITY,AUDITORIUM_TYPE)
VALUES('103-4','103-4','80','ЛК')
INSERT INTO AUDITORIUM (AUDITORIUM,AUDITORIUM_NAME,AUDITORIUM_CAPACITY,AUDITORIUM_TYPE)
VALUES('105-4','105-4','80','ЛК')
INSERT INTO AUDITORIUM (AUDITORIUM,AUDITORIUM_NAME,AUDITORIUM_CAPACITY,AUDITORIUM_TYPE)
VALUES('107-4','107-4','80','ЛК')
INSERT INTO AUDITORIUM (AUDITORIUM,AUDITORIUM_NAME,AUDITORIUM_CAPACITY,AUDITORIUM_TYPE)
VALUES('110-4','110-4','80','ЛК')
INSERT INTO AUDITORIUM (AUDITORIUM,AUDITORIUM_NAME,AUDITORIUM_CAPACITY,AUDITORIUM_TYPE)
Msg 102, Level 15, State 1, Line 16
Incorrect syntax near ')'.

Msg 1767, Level 16, State 0, Line 1
Foreign key 'AUDITORIUM_AUDITORIUM_TYPE_FK' references invalid table 'AUDITORIUM_TYPE'.	
19 май 14, 15:39    [16037423]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
Кавказ-сила, если можеш немного пояни суть кода
19 май 14, 15:39    [16037425]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Кавказ-сила
select *
from AUDITORIUM a1
where a1.AUDITORIUM_CAPACITY > 1.1 * (select avg(a2.AUDITORIUM_CAPACITY)
from AUDITORIUM a2)


select * from
(
select *, avg(auditorium_capacity) over () avg_cap from auditorium
) t
where avg_cap > 1.1* auditorium_capacity


?
19 май 14, 15:40    [16037438]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
Кавказ-сила, да возможно ругнулось из за того что там стоят ключи PK и FK но их для этого задания можно убрать чтоб не цепляло иные таблицы
19 май 14, 15:41    [16037446]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
Кавказ-сила
Member

Откуда: Москва
Сообщений: 261
IrbisMaks
Кавказ-сила, если можеш немного пояни суть кода
http://msdn.microsoft.com/en-us/library/ms177677(SQL.90).aspx
19 май 14, 15:41    [16037449]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
Кавказ-сила
Member

Откуда: Москва
Сообщений: 261
where auditorium_capacity > 1.1* avg_cap
19 май 14, 15:43    [16037467]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Кавказ-сила
where auditorium_capacity > 1.1* avg_cap

ну да ошибся
19 май 14, 15:45    [16037476]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
Чтото не совсем то получается запрос
select * from
(
select *, avg(auditorium_capacity) over () avg_cap from auditorium
) t
where auditorium_capacity > 1.1* avg_cap
вроде работает
но не пойму оно просто посчитало среднее значение и добавило столбец?

К сообщению приложен файл. Размер - 6Kb
19 май 14, 15:50    [16037511]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
IrbisMaks, тогда как мне его модифецировать так чтоб оно не только посчитало среднее значение но и выполнило условие
Удалите информацию обо всех аудиториях, вместимость которых превышает на 10 % среднюю вместимость аудиторий!
19 май 14, 15:52    [16037527]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
Я так понимаю это вложенный запрос но его нужно как то упаковать после DROP
19 май 14, 15:53    [16037537]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
IrbisMaks
Удалите информацию обо всех аудиториях, вместимость которых превышает на 10 % среднюю вместимость аудиторий!


вот вам список БЕЗ АУДИТОРИЙ, "вместимость которых превышает на 10 % среднюю вместимость аудиторий"
select * from
(
select *, avg(auditorium_capacity) over () avg_cap from auditorium
) t
where auditorium_capacity < 1.1* avg_cap
19 май 14, 15:56    [16037558]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
Knyazev Alexey, А как прикрутить к нему команду DROP чтоб он ещё и смог удалять?
19 май 14, 15:58    [16037583]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
icprog
Member

Откуда:
Сообщений: 166
IrbisMaks,

DROP - это команда DDL.
Для удаления строк из таблицы нужно использовать DELETE либо TRUNCATE
19 май 14, 16:00    [16037605]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
IrbisMaks
Knyazev Alexey, А как прикрутить к нему команду DROP чтоб он ещё и смог удалять?

DROP - это DDL команда...

with cte
as
(
select *, avg(auditorium_capacity) over () avg_cap from auditorium
) 
delete from cte where auditorium_capacity > 1.1* avg_cap


автор
Подскажите вариант запроса !!!
вот к такому заданию :


только мне кажется, что вы всё равно не сдадите!
19 май 14, 16:01    [16037615]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
icprog
Member

Откуда:
Сообщений: 166
В вашем случае нужен DELETE
19 май 14, 16:02    [16037621]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
Knyazev Alexey,я только начинаю учится поэтому мне важно понять принцип вложенных запросов а с простыми я справляюсь неплохо!
19 май 14, 16:04    [16037656]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку!  [new]
IrbisMaks
Member

Откуда:
Сообщений: 14
[quot Knyazev Alexey]
IrbisMaks
Knyazev Alexey, А как прикрутить к нему команду DROP чтоб он ещё и смог удалять?

DROP - это DDL команда...

with cte???? что здесь не хватает?
as
(
select *, avg(auditorium_capacity) over () avg_cap from auditorium
) 
delete from cte where auditorium_capacity > 1.1* avg_cap


[quot автор]Подскажите вариант запроса !!!
19 май 14, 16:06    [16037671]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить