Какой рейтинг вас больше интересует?
|
Задание по TSQL перед собеседованием2014-08-22 17:16:00 (читать в оригинале)---------------------------------------- -- ИСХОДНЫЕ ДАННЫЕ: ---------------------------------------- use tempdb go if object_id ('T') is not null drop table T go create table T (id int primary key, Number varchar(50), Price money) go insert into T (id, Number, Price) values (1, 'A', 100.00) insert into T (id, Number, Price) values (2, 'A', 90.00) insert into T (id, Number, Price) values (3, 'B', 200.00) insert into T (id, Number, Price) values (4, 'C', 300.00) insert into T (id, Number, Price) values (5, 'D', 300.00) insert into T (id, Number, Price) values (6, 'D', 300.00) GO ---------------------------------------- -- ЗАДАНИЕ 1: -- удалить из таблицы T повторяющиеся номера Number, -- оставив в ней только номера с максимальной ценой, -- по возможности, одним запросом. ---------------------------------------- --проверка после удаления: select Number, Price from T order by 1, 2 /* Number Price A 100.00 B 200.00 C 300.00 D 300.00 */ ---------------------------------------- -- РЕШЕНИЕ 1: ---------------------------------------- DELETE FROM T WHERE T.id NOT IN ( SELECT id -- , Number, Price FROM ( SELECT T.id AS id, T.Number AS Number, T.Price AS Price, ROW_NUMBER() OVER(PARTITION BY T.Number ORDER BY T.Number, T.Price DESC ) AS R FROM T ) AS PT WHERE R = 1 ) GO ---------------------------------------- -- ЗАДАНИЕ 2: -- порекомендуйте, какой построить индекс на таблице T, -- чтобы уменьшить время выполнения запроса на удаление ---------------------------------------- ---------------------------------------- -- РЕШЕНИЕ 2: ---------------------------------------- -- 1) нужен индекс по ид, обычно он является первичным ключом и создается -- во время создания таблицы, поэтому предполагаем что он уже есть -- 2) еще для ускорения нужен такой сложный индекс: CREATE INDEX idxDelDuplicatesInT ON T (Number ASC, Price DESC) GO
|
Категория «Бизнес»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.