Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/44: Рейтинг темы: голосов - 44, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 13

Запрос на выборку с исключением повторяющихся строк

07.04.2010, 16:21. Показов 9294. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Столкнулся с еще одной проблемой. У меня есть представление, которое выводит данные из таблицы
SQL
1
2
3
4
SELECT PERCENT FULL_DESCRIPTION, NUMBER, FUEL, STATUS
FROM [airport].[dbo].[transport]
WHERE     (FUEL < 2.50) AND (STATUS = N'1')
ORDER BY FULL_DESCRIPTION, NUMBER, FUEL DESC
Данные выводятся в таком виде

Вертолёт(1) - 100 - 2,22 - 1
Вертолёт(1) - 156 - 1,70 - 1
Вертолёт(2) - 172 - 2,48 - 1
Вертолёт(2) - 1240 - 2,36 - 1
Самолёт(1) - 220 - 2,40 - 1
Самолёт(2) - 230 - 2,33 - 1
Самолёт(2) - 2240 - 2,01 - 1

и т.д.

Нужно вывести данные вот в таком виде

Вертолёт(1) - 100 - 2,22 - 1
- 156 - 1,70 - 1
Вертолёт(2) - 172 - 2,48 - 1
- 1240-2,36 - 1
Самолёт(1) - 220 - 2,40 - 1
Самолёт(2) - 230 - 2,33 - 1
- 2240 - 2,01 - 1

И посчитать кол-во заполненных полей FULL_DESCRIPTION (nvarchar).
Ума ни приложу, как это сделать? Изучать SQL только начинаю.
Буду благодарен за любую помощь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.04.2010, 16:21
Ответы с готовыми решениями:

Запрос на выборку из строк
Добрый день уважаемые форумчане, пришел к вам за помощью. В универе задали курсовую, скоро сдавать, а я встал, как мне кажется на...

Запрос на выборку строк с определенным окончанием
Задание: найти абонентов с окончанием фамилий на &quot;ий&quot; и &quot;ко&quot;. Выбираю со строки с ПИБом. Получается выбрать только одно окончание. ...

Запрос на выборку строк от начала до ненужной
Имеется таблица вида: 1 AAA 123 2 BBB 321 3 XXX 123 4 ССС 321 Нужен выбор записей с первой и до записи, у которой во...

12
 Аватар для SunDrop
390 / 229 / 11
Регистрация: 09.12.2009
Сообщений: 668
07.04.2010, 19:07
Создание хранимой процедуры на выборку...
Создаешь такую функцию группировки, а дальше
SQL
1
2
3
4
5
SELECT FULL_DESCRIPTION, func_gconcat(NUMBER + "-" + FUEL + "-" + STATUS)
FROM [airport].[dbo].[transport]
WHERE     (FUEL < 2.50) AND (STATUS = N'1')
GROUP BY FULL_DESCRIPTION
ORDER BY FULL_DESCRIPTION, NUMBER, FUEL DESC
0
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 13
07.04.2010, 23:20  [ТС]
Возникает такая ошибка при обработке функции

Conversion failed when converting the nvarchar value 'Самолет(1)' to data type int.
0
 Аватар для SunDrop
390 / 229 / 11
Регистрация: 09.12.2009
Сообщений: 668
08.04.2010, 01:48
Цитата Сообщение от vodakins Посмотреть сообщение
Conversion failed when converting the nvarchar value 'Самолет(1)' to data type int.
А где это оно у тебя в int конвертится?

Добавлено через 1 час 15 минут
Сразу сбрось код твоей функции и код запроса, где ты ее используешь
0
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 13
08.04.2010, 07:48  [ТС]
SQL
1
2
3
4
5
6
7
8
9
10
11
12
CREATE FUNCTION funcgconcat (@FULL_DESCRIPTION INT)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @RESULT VARCHAR(8000);
SET @RESULT = '';
SELECT @RESULT = @RESULT + NUMBER + FUE + STATUS + ' ' 
FROM [dbo].[transport]
WHERE [FULL_DESCRIPTION] = @FULL_DESCRIPTION;
SET @RESULT = rtrim(@RESULT);
RETURN @RESULT
END
Сделал выборку как в примере по ссылке
0
 Аватар для Devil_FoX
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
08.04.2010, 10:29
Первая строчка не корректна, ты не тот тип прописуешь - вместо int необходимо указать хотя-бы varchar(50)
1
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 13
18.04.2010, 21:41  [ТС]
Уважаемые форумчане задача усложнилась, буду благодарен за любую помощь. Есть такая таблица static с данными [airport_id] nvarchar(255), [lines_id] nvarchar(255), [settled_date] nvarchar(255), [full_description] nvarchar(255),[lines] nvarchar(255), [selections_id] nvarchar(255), [selections] nvarchar(255), [fuel] float, [lbs] float, [pass] float, [up_time] nvarchar(255), [down_time] nvarchar(255), [status] nvarchar(255).

Данные выводятся вот в таком виде
1, 1, 03-07-2008 19:40:30, seatle/newyork NWY 250, british airlines, 1 , boing747, 242, 2220, 125, 03-07-2008 19:40:30, 03-07-2008 23:40:30, 0.

В этой таблице более 15 млн. записей.

Нужно вывести вот так
[full_description],[lines],[selections_id],[selections],[fuel],[status]
где поле [fuel] меньше 350.

seatle/newyork NWY 250, british airlines, 1 , boing747, 242, 0
british airlines, 1 , boing747, 241, 0
iran airlines, 2 , il76, 300, 1
0
 Аватар для Devil_FoX
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
19.04.2010, 11:20
Во первых: зачем ты почти все данные относиш к типу nvarchar(255) ?
для целочисленых цифр используй - int
для дат не то что желательно, а необходимо использовать - datetime

Каждое значение в nvarchar отяжеляет на один бит твою строку.
Значение 255 - ты указал что оно будет весить 255 бит, и не важно что слово может быть с 5 букв.. SQL допишет оставшиеся 250 символов пробелами.

Во вторых. какой критерий тебе нужен для вывода таблицы? я смотрю у тебя есть две даты, и исходя из этого у тебя один самолёт может быть сто раз в одном аэропорте но в разное время и тебе небось не интересно просматривать историю его полётов.

В третьих: попробуй разбить свою мега-таблицу на несколько составных - она у тебя не гибкая.
0
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 13
19.04.2010, 11:38  [ТС]
Проблема вся в том, что я импортирую данные из csv файла. Пробовал разные варианты, вот эти типы данных больше всего подошли. Файлов очень много.

Мне нужен запрос который выводит вот эти строки без повторений [full_description]
seatle/newyork NWY 250 ........................................ .....
newyork/gamburg GBR 312..................................... .......

что находится после вот этих данных меня в принципе не интересует, нужно только чтобы выполнялось условие по полю [fuel].

Да я понимаю, что таблица не гибкая и не соответствует правилам БД. Как провести преобразование таблицы с данными я ,к сожалению, не знаю.
0
 Аватар для Devil_FoX
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
19.04.2010, 12:54
Ну насчёт импорта данных - ты что-то точно не так делаешь, помочь в этом я те не очень смогу - импорт данных это моя ахилесова пята, но вот остальное так сделай (если я правильно понял твою задачу):

T-SQL
1
2
3
4
select distinct
    [full_description],[lines],[selections_id],[selections],[fuel],[status]
from dbo.[static] 
where [fuel]<350
Только тут будет выводить все незадвоенные данные по всем полям.
0
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 13
19.04.2010, 14:32  [ТС]
Цитата Сообщение от Devil_FoX Посмотреть сообщение
Ну насчёт импорта данных - ты что-то точно не так делаешь, помочь в этом я те не очень смогу - импорт данных это моя ахилесова пята, но вот остальное так сделай (если я правильно понял твою задачу):

T-SQL
1
2
3
4
select distinct
    [full_description],[lines],[selections_id],[selections],[fuel],[status]
from dbo.[static] 
where [fuel]<350
Только тут будет выводить все незадвоенные данные по всем полям.
Получиться вот так:

seatle/newyork NWY 250 ........................................ ......
seatle/newyork NWY 250 ........................................ .....
seatle/newyork NWY 250 ........................................ .....
seatle/newyork NWY 250 ........................................ .....
seatle/newyork NWY 250 ........................................ .....
seatle/newyork NWY 250 ........................................ .....
seatle/newyork NWY 250 ........................................ .....
seatle/newyork NWY 250 ........................................ .....
newyork/gamburg GBR 312..................................... .......
newyork/gamburg GBR 312..................................... .......
newyork/gamburg GBR 312..................................... .......
newyork/gamburg GBR 312..................................... .......

где вместо точек будут разные данные

мне же нужно посчитать кол-во строк, которые повторяются:
seatle/newyork NWY 250 это будет запись под номером 1
newyork/gamburg GBR 312 это будет запись под номером 2

и т.д.

Их более милиона.
0
 Аватар для Devil_FoX
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
19.04.2010, 14:42
для того что бы посчитать кол-во повторений для поля [full_description] - вот запрос:
SQL
1
2
3
4
5
6
SELECT 
    [full_description],
    COUNT(*) AS povtor
FROM dbo.[static] 
WHERE [fuel]<350
GROUP BY [full_description]
1
 Аватар для SunDrop
390 / 229 / 11
Регистрация: 09.12.2009
Сообщений: 668
19.04.2010, 17:43
Цитата Сообщение от Devil_FoX Посмотреть сообщение
SQL допишет оставшиеся 250 символов пробелами.
Увы нет
Цитата Сообщение от Devil_FoX Посмотреть сообщение
В третьих: попробуй разбить свою мега-таблицу на несколько составных - она у тебя не гибкая.
Дадада... Точно замечено!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2010, 17:43
Помогаю со студенческими работами здесь

Запрос на выборку и подсчета количества строк
mysql_query(&quot;SELECT * FROM таблица WHERE условие&quot;,$db); Всего в таблице &quot;таблица&quot; 100 строк По условию &quot;WHERE условие&quot; 50...

Слияние массивов с исключением повторяющихся элементов
Запутался в немного. Дана задача: Составить описание класса одномерных массивов строк, каждая строка задается длиной и указателем на...

MySQL + PHP запрос на выборку уникальных строк по последней дате из двух таблиц
Подскажите где ошибка, выдает первую запись по дате, а не последнюю таблицы create table secretariat_data_docs_tbl ( NomDoc int...

Сформировать массив из двух других массивов с исключением повторяющихся элементов
Дано 2 массива. Сформировать третий массив, включив в него все элементы, которые есть и в первом, и во втором массиве. Повторяющиеся...

Получить файл g, образованный из файла f исключением повторяющихся вхождений одного и того же числа
2. Дан файл f, содержащий целые числа. Получить файл g, образованный из файла f исключением повторяющихся вхождений одного и того же числа


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru