inflearn logo
강의

Khóa học

Chia sẻ kiến thức

[#100.000.000] Giải quyết vấn đề SQL trung cấp để phân tích dữ liệu

Giải bài 3, bài 4

GROUP BY 질문입니다

299

nyeongna

30 câu hỏi đã được viết

1

안녕하세요, 수업 잘 수강하고 있습니다.
다름이 아니라 GROUP BY가 조금 헷갈려서 질문드립니다.
leetcode 182. Duplicate Emails를 예시를 들어 질문드립니다.
SELECT *
FROM Person
GROUP BY Email
이런식으로 Email로 groupby를 하게되고 같은 email을 가진 row끼리 묶이면서 count(email)등 등 연산을 할 수 있는 것으로 알고 있는데, groupby Email로 했는데 count(id)는 어떻게 동작되는지 궁금합니다.
Email기준으로 groupby했는데 count(id)를 할 수 있는건가요??
Email기준으로 groupby 했을때 count(id), count(*), count(Email)의 차이점이 궁금합니다.

sql

Câu trả lời 2

2

jaemin

그룹을 묶는 기준이 되는 컬럼을 GROUP BY 절에 쓰고, 데이터 수를 세는 연산의 대상이 되는 컬럼을 COUNT() 안에 씁니다. 
COUNT(*)은 row(행)의 개수를 의미합니다.

위 테이블에서 데이터를 조회하기 위해 다음과 같은 쿼리를 써 봅시다.

SELECT Email, COUNT(Id), COUNT(*), COUNT(Email)
FROM Person
GROUP BY Email

이 쿼리는 Email 값이 같은 것끼리 그룹을 지은 후, 각 그룹 내에서 Id 개수, row 개수, Email 개수를 세서 Email 값과 함께 출력해 달라는 뜻이므로, 다음과 같은 결과가 나옵니다.

a@b.com | 2 | 2 | 2
c@d.com | 1 | 1 | 1

이것은 중복값을 제외하지 않은 결과로, a@b.com 그룹의 Email 컬럼 값들이 a@b.com으로 동일하지만 데이터 수가 총 2개이므로 COUNT(Email) 값을 2로 출력합니다.

중복값을 제외하고 싶을 때는 DISTINCT를 함께 써 줘야 합니다. 

SELECT Email, COUNT(DISTINCT Id), COUNT(*), COUNT(DISTINCT Email)
FROM Person
GROUP BY Email

a@b.com | 2 | 2 | 1
c@d.com | 1 | 1 | 1

0

nyeongna

감사합니다. 개념이 좀 더 명확해진거같네요!

섹션 4번에 2번 문제 질문입니다.

0

103

2

4번 문제

0

82

1

Top competitors 에서 having count(h.hacker_id)로 해도 되나요?

0

258

1

leetcode 620 group by 질문이요

0

202

2

강의 일시정지/ 기간연장 검토 요청

0

379

1

4번 문제 group by 질문

0

318

2

세트2 4번 문제풀이 해설에 관한 질문

0

353

2

Weather Observation Station 11_ not like 사용

0

266

1

Placements에서 LEFT JOIN 뒤에 ON 조건

0

282

1

Set2 4번문제 질문 - New Companies

0

315

1

WHERE절 안 쓰고 HAVING COUNT(D.score = S.score) > 1 쓰면 왜 안되나요?

-1

702

1

as 2 space-separated values. 무슨 말인가요???

0

429

1

Weather observation Station 11 관련 질문

1

372

2

4번문제풀이

0

453

1

섹션3. Weather Observation Station 18 문제 관련

0

372

2

섹션 2에 1,2번 문제풀이 관하여

0

432

1

기한연장문의

0

329

1

Weather observation station 11 문제 not like

-1

363

1

inner join 과 left join

1

594

1

4번 BST 문제 틀리는 이유

0

343

1

4번 문제 질문

0

288

1

620. Not Boring Movies 문제 질문드립니다

0

286

1

binary tree 질문 입니다.

0

296

1

Top Competitors 질문있습니다 ㅠㅠ

0

245

1