Сегодня 22 мая, среда ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7273
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
coding4.net
coding4.net
Голосов: 1
Адрес блога: http://www.coding4.net/
Добавлен: 2012-06-11 20:16:46
 

Вопрос на собеседовании по TSQL (про группировку)

2012-09-30 20:53:00 (читать в оригинале)


Есть таблица с данными по машинами. Скрипт создания:


CREATE TABLE [Car]
(
[id] [int] IDENTITY(1,1) NOT NULL,
[mark] [char](32) NOT NULL,
[model] [nchar](32) NOT NULL,
[serial] [numeric](10, 0) NOT NULL,
[year] [numeric](4, 0) NOT NULL,
[some] [nchar](10) NOT NULL,
)

Содержимое:

   id   mark    model    serial    year   some

   1    Aston Martin   DB9    9034524418   2005   thhhrtyum

   2    Hyundai    Coupe    4567678393   2004   xiang

   3    Chrysler    300C    1746684332   2008   xvsasg

   4    Aston Martin   DB9    9034524418   2006   oiueuhd

   5    Chrysler    300C    1546678890   2004   wrthsd

   6    Aston Martin   DB9    9034535321   2007   plerojcn

   7    Nissan    350Z    4567678393   2005   fbnvxr

   8    Chrysler    Sebring   1546678890   2005   adfbvnv

   9    Hyundai    Coupe    4567678393   2008   swang

   10   Aston Martin   DB9    9034524418   2009   hurrand

Принято, что строка является уникальной, если ее комбинация полей model и serial не встречается ни в одной другой строке. Нужно составить запрос, который вернет все уникальные в этом смысле строки таблицы. В этом состоит задание.

Вот решение (запорос):


SELECT C.id, C.mark, C.model, C.serial, C.year, C.[some]
FROM Car AS C
INNER JOIN 
(
	SELECT 
		   [model]
		  ,serial
		  , COUNT(*) AS CNT      
	  FROM [Car]
	GROUP BY [model], serial
) AS TCNT
ON C.model=TCNT.model AND C.serial=TCNT.serial AND TCNT.CNT = 1
А вот, что вернет этот запрос:


5	Chrysler                        	300C                            	1546678890	2004	wrthsd    
3	Chrysler                        	300C                            	1746684332	2008	xvsasg    
7	Nissan                          	350Z                            	4567678393	2005	fbnvxr    
6	Aston Martin                    	DB9                             	9034535321	2007	plerojcn  
8	Chrysler                        	Sebring                         	1546678890	2005	adfbvnv   

Тэги: tsql, вопрос, собеседование

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по сумме баллов (758) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.