Program Tip

개수 별 SQL 순서

programtip 2020. 12. 7. 20:35
반응형

개수 별 SQL 순서


다음과 같은 테이블과 데이터가있는 경우 :

ID |  Name  |  Group   

1    Apple     A    

2    Boy       A

3    Cat       B

4    Dog       C

5    Elep      C

6    Fish      C

A-2 레코드, B-1 레코드, C-3 레코드와 같이 가장 작은 값에서 가장 큰 값까지 Group의 총계에 따라 주문하고 싶습니다.

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)";

그러나 그것은 나를 위해 하나의 결과를 반환합니다.

힌트가 있습니까? 감사합니다.


먼저 데이터를 집계해야합니다. 이는 GROUP BY 절을 사용하여 수행 할 수 있습니다.

SELECT Group, COUNT(*)
FROM table
GROUP BY Group
ORDER BY COUNT(*) DESC

DESC 키워드를 사용하면 가장 높은 수를 먼저 표시하고 기본적으로 ORDER BY를 오름차순으로 표시하여 가장 낮은 수를 먼저 표시 할 수 있습니다.


시도해보십시오 :

SELECT count(*),group FROM table GROUP BY group ORDER BY group

내림차순으로 주문하려면

SELECT count(*),group FROM table GROUP BY group ORDER BY count(*) DESC

이 의지 그룹은에 의해 결과 group열은 반환 group과를 count하고 순서를 반환 group하기 위해


SELECT * FROM table 
group by `Group`
ORDER BY COUNT(Group)

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

... 다른 답변은 질문자가 요청한 것을 수행하지 않는 것 같습니다.

For table named 'things' with column 'group':

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;

which gives:

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

Try using below Query:

SELECT
    GROUP,
    COUNT(*) AS Total_Count
FROM
    TABLE
GROUP BY
    GROUP
ORDER BY
    Total_Count DESC

Below gives me opposite of what you have. (Notice Group column)

SELECT
    *
FROM
    myTable
GROUP BY
    Group_value,
    ID
ORDER BY
    count(Group_value)

Let me know if this is fine with you...

I am trying to get what you want too...


Q. List the name of each show, and the number of different times it has been held. List the show which has been held most often first.

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

참고URL : https://stackoverflow.com/questions/9545637/sql-order-by-count

반응형