Как сортировать по новому сгенерированному столбцу в mySQL?

Мне нужно отсортировать некоторую информацию, которая закодирована в следующей форме: ГТЕХ-ВЯ-2126-СМ-4КЛ1О У меня есть список этих идентификаторов, и я должен взять первые две строки, разделенные «-» (так, GTEX-VUSG), и подсчитать, сколько из каждого отдельного идентификатора я получаю.

Я использую следующий код MySQL:

mysql> SELECT SUBSTRING_INDEX(SAMPID,'-',2), COUNT(*) FROM GTEX_Sample GROUP BYSUBSTRING_INDEX(SAMPID, '-',2);

И я получаю следующий результат:

| GTEX-ZXG5                     |       21 |
| GTEX-ZY6K                     |       19 |
| GTEX-ZYFC                     |       20 |
| GTEX-ZYFD                     |       19 |
| GTEX-ZYFG                     |       25 |
| GTEX-ZYT6                     |       26 |
| GTEX-ZYVF                     |       20 |
| GTEX-ZYW4                     |       20 |
| GTEX-ZYWO                     |       25 |
| GTEX-ZYY3                     |       21 |
| GTEX-ZZ64                     |       20 |
| GTEX-ZZPT                     |       12 |
| GTEX-ZZPU                     |       23 |
| K-562                         |      217

Теперь мне нужно отсортировать этот результат по новому сгенерированному столбцу (второму), но поскольку он новый, я не знаю, как использовать команду «упорядочить по». Есть ли способ сделать это?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
195
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Просто повторите выражение в предложении ORDER BY:

SELECT SUBSTRING_INDEX(SAMPID,'-',2), COUNT(*) 
FROM GTEX_Sample 
GROUP BY SUBSTRING_INDEX(SAMPID, '-',2) 
ORDER BY COUNT(*) DESC

Вы также можете использовать псевдоним столбца в предложении SELECT и использовать его для сортировки:

SELECT SUBSTRING_INDEX(SAMPID,'-',2), COUNT(*) AS CNT
FROM GTEX_Sample 
GROUP BY SUBSTRING_INDEX(SAMPID, '-',2) 
ORDER BY CNT DESC

Обратите внимание, что MySQL расширяет стандарт SQL, разрешая псевдонимы столбцов в предложении GROUP BY. Это позволяет вам сделать что-то вроде:

SELECT SUBSTRING_INDEX(SAMPID,'-',2) AS SUBSAMPID, COUNT(*) AS CNT
FROM GTEX_Sample 
GROUP BY SUBSAMPID 
ORDER BY CNT DESC

У GMB есть правильный ответ.

Порядок также принимает позиционные параметры, такие как

SELECT SUBSTRING_INDEX (SAMPID, '-', 2), COUNT (*) ИЗ GTEX_Sample GROUP BYSUBSTRING_INDEX(SAMPID, '-',2) ORDER BY 2;

Другие вопросы по теме