СОРТИРОВКА ДАННЫХ
Лекция 3. Сортировка и группировка данных с помощью SQL
КЛЮЧЕВОЕ СЛОВО TOP
Общий вид: TOP n [PERCENT]
Использование ключевого слова TOP n, где n – числовое значение, позволяет отобрать в результат не все строки, а только n первых. При этом выбираются первые строки выборки, а не исходных данных.
Задача 7. Найти первые 5 книг изданных издательством, код которого равен1.
Решение: SELECT TOP 5 * FROM Книги
WHERE Издательство=1;
Можно так же выбирать не фиксированное количество строк, а определённый процент от всех строк, удовлетворяющих условию. Для этого необходимо добавить ключевое слово PERCENT.
Задача 8. Вывести 50% книг изданных издательством, код которого равен1.
Решение: SELECT TOP 50 PERCENT * FROM Книги
WHERE Издательство=1;
Строки в БД считываются в том порядке, в котором они были добавлены в таблицу. Необходимый порядок записей в выборке и отражение строк можно задать с помощью предложения ORDER BY. Это предложение всегда располагается после предложений FROM или WHERE.
|
|
Общий вид: ORDER BY <список полей> [ASC|DESC]
ASC - является не обязательным, задаёт сортировку по возрастанию, DESC – является обязательным при сортировке по убыванию.
SELECT [ALL|DISTINCT| DISTINCTROW |
[TOP n [PERCENT]] <список_полей> | *
[FROM {<имя_таблицы>},... ]
[WHERE <условие> ]
[ORDER BY {<имя_поля> [ASC] | DESC},...]
Задача 1. Вывести список всех авторов в алфавитном порядке, фамилии которых заканчиваются на ‘ин’.
Решение: SELECT * FROM Авторы
WHERE Фамилия LIKE ‘*ин’ ORDER BY Фамилия;
Задача 2. Вывести список книг по убыванию относительно цен.
Решение: SELECT * FROM Книги ORDER BY Название DESC;
Предложение GROUP BY группирует записи таблицы, определенной в предложении FROM, в разделы или группы таким образом, чтобы в каждой группе все строки имели одинаковые значения. Предложение GROUP BY всегда располагается после предложений FROM или WHERE.
Общий вид: GROUP BY <список полей>
SELECT [ALL|DISTINCT| DISTINCTROW |
[TOP n [PERCENT]] <список_полей> | *
[FROM {<имя_таблицы>},... ]
[WHERE <условие> ]
[GROUP BY {<имя_поля>},... ]
[ORDER BY {<имя_поля> [ASC] | DESC},...]
Предложение GROUP BY не предполагает упорядочивания. Для упорядочивания результата следует поместить ORDER BY после GROUP BY.
Задача 3. Найдите книги, изданные в издательстве Вагриус, код которого равен 4. Произвести группировку данных относительно поля Автор.
Решение: SELECT * FROM Книги
WHERE Издательство = 4 GROUP BY Автор;
Можно задать сортировку относительно фамилий автора.
SELECT * FROM Книги
WHERE Издательство = 4 GROUP BY Автор ORDER BY Автор;