MySQL

MySQL의 그룹화 하여 데이터를 처리하는 group by, 데이터 개수 확인하는 count() 함수

HooSL 2021. 12. 8. 17:52

예시 문)

INSERT INTO books (title, author_fname, author_lname, released_year, stock_quantity, pages)
VALUES
('The Namesake', 'Jhumpa', 'Lahiri', 2003, 32, 291),
('Norse Mythology', 'Neil', 'Gaiman',2016, 43, 304),
('American Gods', 'Neil', 'Gaiman', 2001, 12, 465),
('Interpreter of Maladies', 'Jhumpa', 'Lahiri', 1996, 97, 198),
('A Hologram for the King: A Novel', 'Dave', 'Eggers', 2012, 154, 352),
('The Circle', 'Dave', 'Eggers', 2013, 26, 504),
('The Amazing Adventures of Kavalier & Clay', 'Michael', 'Chabon', 2000, 68, 634),
('Just Kids', 'Patti', 'Smith', 2010, 55, 304),
('A Heartbreaking Work of Staggering Genius', 'Dave', 'Eggers', 2001, 104, 437),
('Coraline', 'Neil', 'Gaiman', 2003, 100, 208),
('What We Talk About When We Talk About Love: Stories', 'Raymond', 'Carver', 1981, 23, 176),
("Where I'm Calling From: Selected Stories", 'Raymond', 'Carver', 1989, 12, 526),
('White Noise', 'Don', 'DeLillo', 1985, 49, 320),
('Cannery Row', 'John', 'Steinbeck', 1945, 95, 181),
('Oblivion: Stories', 'David', 'Foster Wallace', 2004, 172, 329),
('Consider the Lobster', 'David', 'Foster Wallace', 2005, 92, 343),
('10% Happier', 'Dan', 'Harris', 2014, 29, 256),
('fake_book', 'Freida', 'Harris', 2001, 287, 428),
('Lincoln In the Bardo', 'George', 'Saunders', 2017, 156, 375);

컬럼안에 있는 데이터들을 그룹화 하여 데이터를 처리하는 group by의 예시문입니다.

author_lname 별로 몇권의 책을 냈는지 author_lname과 책의 개수로 조회를 한다고 할때

select author_lname,count(*)
from books
group by author_lname;

count는 ()안에 해당 데이터가 총 몇개인지 세어줍니다.

 

 

다른 예시입니다.

연도별로 몇권의 책이 발간되었는지 In 출간연도 권수 books released 로 출력한다고 했을때는 

select concat_ws(' ','In',released_year,count(*), 'books released')
as year
from books
group by released_year  -- group by로 그룹화를 먼저 하고
order by released_year; -- order by로 정렬을 마지막에 해야합니다.