Как выполнить пользовательскую сортировку в предложении SQL ORDER BY?
По умолчанию SQL ORDER BYsort, столбец в возрастающем порядке, но когда требуется убывающий порядок, можно использовать ORDER BY DESC. В случае, когда нам нужна пользовательская сортировка, нам нужно использовать оператор CASE, где мы должны указать приоритеты для сортировки столбца.
В этой статье давайте посмотрим, как мы можем настраивать сортировку в таблице, используя порядок, используя MSSQL в качестве сервера.
Синтаксис:
SELECT * FROM table_name ORDER BY CASE WHEN column_field = "value1" THEN priority1 WHEN column_field = "value2" THEN priority2 WHEN column_field = "value3" THEN priority3 . ELSE priorityn END ASC
Шаг 1: Мы создаем базу данных. Для этого используйте приведенную ниже команду, чтобы создать базу данных с именем GeeksforGeeks.
Запрос:
CREATE DATABASE GeeksforGeeks;
Шаг 2: Чтобы использовать базу данных GeeksforGeeks, используйте следующую команду.
Запрос:
USE GeeksforGeeks
Шаг 3: Теперь мы создаем таблицу. Создайте таблицу student_marks с 4 столбцами, используя следующий SQL-запрос.
Запрос:
CREATE TABLE student_marks( stu_id VARCHAR(20), stu_name VARCHAR(20), stu_branch VARCHAR(20), total_marks INT )
Шаг 4: Просмотрите описание таблицы.
Запрос:
EXEC sp_columns student_marks
Шаг 5: запрос на вставку строк в таблицу. Вставьте строки в таблицу student_marks, используя следующий запрос SQL.
Запрос:
INSERT INTO student_marks VALUES( "1001","PRADEEP","E.C.E", 550), ( "1002","KIRAN","E.C.E", 540), ( "5001","PRANAV","I.C.E", 450), ( "2001","PADMA","C.S.E", 570), ( "2002","SRUTHI","C.S.E", 480), ( "2003","HARSITHA","C.S.E", 534), ( "3001","SAI","I.T", 560), ( "3002","HARSH","I.T", 510), ( "4001","HARSHINI","E.E.E", 500)
Шаг 6: Просмотр вставленных данных
Запрос:
SELECT * FROM student_marks
- Запрос к пользовательской сортировке на основе порядка ветвей CSE, IT, ECE, ICE, EEE также показывает разницу между сортировкой по умолчанию с использованием ORDER BY.
Сортировка по умолчанию по ORDER BY :
SELECT * FROM student_marks ORDER BY stu_branch
Выход:
Пользовательская сортировка по ORDER BY:
SELECT * FROM student_marks ORDER BY CASE WHEN stu_branch = "C.S.E" then 1 WHEN stu_branch = "I.T" then 2 WHEN stu_branch = "E.C.E" then 3 WHEN stu_branch = "I.C.E" then 4 WHEN stu_branch = "E.E.E" then 5 END ASC
Выход: