SQL Order By Count
Если у меня есть таблица и данные вроде этого:
ID | Name | Group
1 Apple A
2 Boy A
3 Cat B
4 Dog C
5 Elep C
6 Fish C
и я хочу заказать его в соответствии с общей суммой Group от наименьшего до наибольшего значения, например:
A - 2 записи, запись B - 1, C - 3 записи, поэтому она станет:
3 Cat B
1 Apple A
2 Boy A
4 Dog C
5 Elep C
6 Fish C
Я пробовал
$sql = "SELECT ID,Name FROM table ORDER BY COUNT(Group)";
но он просто возвращает мне один результат.
Есть ли намеки? Спасибо.
Ответы
Ответ 1
Сначала вам необходимо агрегировать данные, это можно сделать с помощью предложения GROUP BY:
SELECT Group, COUNT(*)
FROM table
GROUP BY Group
ORDER BY COUNT(*) DESC
Ключевое слово DESC позволяет сначала показать наивысший счет, ORDER BY по порядку по порядку в порядке возрастания, который сначала показывает самый низкий счет.
Ответ 2
Попробуйте:
SELECT count(*),group FROM table GROUP BY group ORDER BY group
заказывать по счету убывания do
SELECT count(*),group FROM table GROUP BY group ORDER BY count(*) DESC
Это сгруппирует результаты с помощью столбца group
, возвращающего group
и count
, и вернет порядок в group
order
Ответ 3
SELECT * FROM table
group by `Group`
ORDER BY COUNT(Group)
Ответ 4
SELECT Group, COUNT(*) FROM table GROUP BY Group ORDER BY Group
или заказать по счету
SELECT Group, COUNT(*) AS count FROM table GROUP BY Group ORDER BY count DESC
Ответ 5
Ниже приведена противоположность тому, что у вас есть. (Колонка группы уведомлений)
SELECT
*
FROM
myTable
GROUP BY
Group_value,
ID
ORDER BY
count(Group_value)
Дайте мне знать, если с вами все в порядке...
Я пытаюсь получить то, что вы хотите тоже...
Ответ 6
Попробуйте использовать ниже запрос:
SELECT
GROUP,
COUNT(*) AS Total_Count
FROM
TABLE
GROUP BY
GROUP
ORDER BY
Total_Count DESC
Ответ 7
Q. Укажите название каждого шоу и количество раз, когда оно было проведено. Перечислите шоу, которое проводилось чаще всего в первую очередь.
event_id show_id event_name judge_id
0101 01 Dressage 01
0102 01 Jumping 02
0103 01 Led in 01
0201 02 Led in 02
0301 03 Led in 01
0401 04 Dressage 04
0501 05 Dressage 01
0502 05 Flag and Pole 02
Ans:
select event_name, count(show_id) as held_times from event
group by event_name
order by count(show_id) desc
Ответ 8
... ни один из других ответов, кажется, не делает то, что спросил спрашивающий.
Для таблицы с именем "вещи" со столбцом "группа":
SELECT
things.*, counter.count
FROM
things
LEFT JOIN (
SELECT
things.group, count(things.group) as count
FROM
things
GROUP BY
things.group
) counter ON counter.group = things.group
ORDER BY
counter.count ASC;
который дает:
id | name | group | count
---------------------------
3 | Cat | B | 1
1 | Apple | A | 2
2 | Boy | A | 2
4 | Dog | C | 3
5 | Elep | C | 3
6 | Fish | C | 3