본문 바로가기

SQL(Structured Query Language:)

SQL : 데이터 중복제거 distinct

DISTINCT란 중복제거 키워드입니다. SELECT로 DB에서 컬럼을 조회할 때, 중복되는 값을 제거하고 조회할 때 사용합니다. 즉, DISTINCT 키워드를 붙인 필드(컬럼)는 중복 값을 합쳐 한 번만 출력합니다.

-- 테이블에서 필드에 대해 중복제외하여 출력
    SELECT DISTINCT 필드 FROM 테이블.

 


use yh_db;

SELECT * FROM yh_db.books;

insert into books
(title, author_fname, auther_lname, released_year, stock_quantity, pages)
values
('10% Hppir', 'Dan', 'Harris', 2014, 29, 256),
('fake_book', 'Freida', 'Harris', 2001, 287, 428), 
('Lincoln In The Baardo', 'George', 'Saunders', 2017, 111, 388); 

select * from books;

-- distinct 판다스의 유니크와 비슷함
-- author_lname의 이름을 중복없이 가져오세요.
select distinct author_lname
from books;

-- 작가의 full name을 중복없이 가져오세요.
select distinct author_fname
from books;

-- 작가의 풀네임을 중복없이 가져오세요.
select distinct concat(author_fname,' ', author_lname)
from books;

-- 데이터 정렬 order by
-- 책 제목으로 으로 정렬하세요

select *
from books
order by  title;

-- 내림차순 정렬은 desc 이고, 
-- 오름차순 정렬은 디폴트이므로, 아무것도 안쓰거나, asc라고 써주면 된다.

-- 책제목 내림차순으로 가져오라
select *
from books
order by title desc;

-- 년도 내림차순으로 정렬하여 년도와 책 제목을 가져오시오.
select released_year, title
from books
order by released_year desc;


-- full name을 내림차순으로 정렬하고, 책 페이지가 많은것부터 가져오세요.

select *, concat(author_fname, ' ', author_lname) as full_name
from books
order by full_name desc, pages desc;

select *, concat(author_fname, ' ', author_lname) as full_name
from books
order by 8 desc, 7 desc;