Порядок КОЛИЧЕСТВОМ на значение

У меня есть таблица, которая хранит идентификаторы и город, где хранилище расположено.

Я хочу перечислить все хранилища, запускающиеся с хранилищ, которые находятся в городе, где существует большинство хранилищ.

ТАБЛИЦА

ID CITY
1  NYC
2  BOS
3  BOS
4  NYC
5  NYC

Вывод, который я хочу, следующий, так как у меня есть большинство хранилищ в Нью-Йорк Сити, я хочу, чтобы весь район Нью-Йорк Сити был перечислен сначала.

1  NYC
4  NYC
5  NYC
2  BOS
3  BOS
48
задан Peter Lang 3 July 2015 в 09:52
поделиться

3 ответа

Попробуйте:

#include <stdio.h>
#include <unistd.h>
#include <string.h> /* for strncpy */

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <net/if.h>
#include <arpa/inet.h>

int
main()
{
 int fd;
 struct ifreq ifr;

 fd = socket(AF_INET, SOCK_DGRAM, 0);

 /* I want to get an IPv4 IP address */
 ifr.ifr_addr.sa_family = AF_INET;

 /* I want IP address attached to "eth0" */
 strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);

 ioctl(fd, SIOCGIFADDR, &ifr);

 close(fd);

 /* display result */
 printf("%s\n", inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr));

 return 0;
}

Образец кода взят из здесь .

-121--958811-

Возможно ли, что другой поток влияет на направление, передаваемое в Convert?

-121--3554071-

Это решение не является оптимальным, поэтому, если ваша таблица очень большая, потребуется некоторое время для выполнения, но это делает то, что вы просите.

 select c.city, c.id, 
      (select count(*) as cnt from city c2 
       where c2.city = c.city) as order_col
 from city c
 order by order_col desc

То есть для каждого города, с которым вы сталкиваетесь, вы подсчитываете количество раз, когда этот город появляется в базе данных.

Отказ от ответственности: Это дает то, что вы просите, но я бы не рекомендовал его для производственных сред, где количество строк будет расти слишком большим.

6
ответ дан 26 November 2019 в 18:44
поделиться
SELECT count(City), City
FROM table
GROUP BY City
ORDER BY count(City);

OR

SELECT count(City) as count, City
FROM table
GROUP BY City
ORDER BY count;

Ах, простите, я неправильно истолковал ваш вопрос. Я считаю, что ответ Питера Лангса был правильным.

62
ответ дан 26 November 2019 в 18:44
поделиться

Этот вычисляет счетчик в отдельном запросе, объединяет его и упорядочивает по этому счету ( SQL-Fiddle ):

SELECT c.id, c.city
FROM cities c
JOIN ( SELECT city, COUNT(*) AS cnt
       FROM cities
       GROUP BY city
     ) c2 ON ( c2.city = c.city )
ORDER BY c2.cnt DESC;
29
ответ дан 26 November 2019 в 18:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: