Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 GROUP BY와 ORDER BY로 검색량 기준 인기 도메인 찾는 방법

개요

도메인 레코드와 검색 횟수가 저장된 MySQL 테이블에서 가장 인기 있는 도메인을 찾으려면 GROUP BY 절과 함께 ORDER BY 절을 사용하면 됩니다. GROUP BY로 도메인별로 데이터를 묶고, SUM() 함수로 검색 횟수를 합산한 뒤, ORDER BY DESC로 내림차순 정렬하면 검색량이 많은 순서대로 결과를 확인할 수 있습니다.

이제 실제 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다. URL, 도메인 이름, 검색 횟수 세 개의 컬럼으로 구성합니다.

mysql> create table DemoTable
-> (
-> URL varchar(40),
-> DomainName varchar(20),
-> SearchTimes int
-> );
Query OK, 0 rows affected (0.62 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다. 같은 도메인이 여러 번 기록되어 있어야 집계 결과를 확인할 수 있습니다.

mysql> insert into DemoTable values('www.gmail.com','gmail.com',4);
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values('www.google.com','google.com',3);
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable values('www.gmail.com','gmail.com',9);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('www.facebook.com','facebook.com',8);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('www.facebook.com','facebook.com',2);
Query OK, 1 row affected (0.16 sec)

3. 전체 레코드 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 출력을 생성합니다.

+------------------+--------------+-------------+
| URL | DomainName | SearchTimes |
+------------------+--------------+-------------+
| www.gmail.com | gmail.com | 4 |
| www.google.com | google.com | 3 |
| www.gmail.com | gmail.com | 9 |
| www.facebook.com | facebook.com | 8 |
| www.facebook.com | facebook.com | 2 |
+------------------+--------------+-------------+
5 rows in set (0.00 sec)

4. 인기 도메인 조회 쿼리 작성하기

아래 쿼리는 각 도메인별로 검색 횟수를 합산(SUM)한 후, 검색량이 가장 높은 도메인부터 내림차순으로 정렬하여 보여줍니다. 별칭(Alias)인 TotalSearch를 사용하면 ORDER BY 절에서 합산된 값을 기준으로 정렬할 수 있습니다.

mysql> select DomainName,sum(SearchTimes) as TotalSearch from DemoTable
-> group by DomainName
-> order by TotalSearch desc;

결과 확인

위 쿼리는 다음과 같은 출력을 생성합니다.

+--------------+-------------+
| DomainName | TotalSearch |
+--------------+-------------+
| gmail.com | 13 |
| facebook.com | 10 |
| google.com | 3 |
+--------------+-------------+
3 rows in set (0.00 sec)

결과 해석

출력 결과를 보면 gmail.com이 총 13회(4 + 9)로 가장 인기가 높고, 그다음으로 facebook.com이 10회(8 + 2), 마지막으로 google.com이 3회로 나타납니다. 이처럼 GROUP BY와 SUM(), ORDER BY DESC를 조합하면 중복된 도메인 레코드를 하나로 묶어 검색량 기준의 인기 순위를 손쉽게 산출할 수 있습니다.

참고로 상위 N개의 도메인만 확인하고 싶다면 쿼리 끝에 LIMIT 절을 추가하면 됩니다. 예를 들어 LIMIT 1을 붙이면 검색량이 가장 많은 단일 도메인만 반환됩니다.