ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

acer ado.net amd asp.net c sharp c# cms css exceptions google html ipad iphone it бизнес javascript jquery linq microsoft mysql net nokia nokia lumia samsung seo silverlight sql surface tsql windows 8 windows blue windows phone windows rt xna безопасность библиотека вопросы на собеседовании интересные проекты интернет интернет магазин исключения книга книги компьютерная безопасность компьютерные игры контролы курсы по программированию логированние исключений мобильные приложения монетизация сайтов наушники новости новости it новости microsoft новости интернет новости технологий ноутбук ноутбуки обработка исключений оптимизация острова периферия планшет планшеты поддержка сайтов поисковое продвижение программы продвижение продвижение сайта продвижение сайтов рабство разработка игр разработка сайтов раскрутка сайта рекламные технологии смартфон смартфоны собеседование создание сайтов средства разработки туризм фриланс хостинг яндекс
  << Предыдущий пост       Следующий пост >>  
От: inbruk
22. августа 2014 17:16
----------------------------------------
-- ИСХОДНЫЕ ДАННЫЕ:
----------------------------------------
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

Похожие записи


Вопросы на собеседовании C#, Net, ASP.NET, SQL
Продолжая тему вопросов на собеседовании. Нашел еще одну подборку. Оригинал лежит здесь . Перенес, чтобы не затерялось. Есть вполне вменяемые ответы (хотя, на некоторые вопросы ответил бы по-другому). Ответы находятся после списка вопросов, я их не менял. 23. Что такое шаблон проектирования Model/View/Controller? Как и зачем его применяют? 2...

Способы заработка на сайте
На этом блоге было много постов про производство и раскрутку сайтов. Но пока не было про заработок на них. Пора исправить этот недочет. Здесь будут описаны по возможности не фантастичные, и не супер низко прибыльные способы. Также упор будет сделан именно на организацию процесса, а не технических деталях, которых в обилии в интернете. Несмотря на то, что как пр...

CommonLibrary.NET - полезных вспомогательные компоненты под C# 4.0
Коллекция удобных для повторного использования кода и компонентов, написанных на C # 4.0. Они реализуют следующие шаблоны (решают задачи): ActiveRecord, CSV, анализ командной строки, конфигурация, проверки, коллекции, аутентификация и многое другое. Представляет собой аналог библиотеки Java Commons из Java. Идеальна в качестве библиотеки утилит для разработчика н...

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий