Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- GPT-1
- 이진법 십진법 변환
- 모두의네트워크요약
- Binary notation
- Tautology
- relationaldatabaseschema
- Circuit
- 진리표
- statement equivalence
- half adder
- 항진명제
- 명제 동치
- Logical statement
- Contradiction
- 모순명제
- 십진법
- ermodel
- CNF
- 모두의네트워크
- 명제
- truth table
- Decimal notation
- Sentiment Analysis
- 모두의네트워크정리
- dnf
- cnn
- Gate
- Digital Logic Circuits
- 써킷
- full adder
Archives
- Today
- Total
NLP Learner in Switzerland
Advanced SQL query 구현 예제 본문
728x90
반응형
[답]
1. 3번째로 긴 강을 구하다보니 nested query가 3층으로 들어갔다. 물론 이것도 답은 맞지만,
select name
from river
where length =(
select max(length)
from river
where length <
(select max(length)
from river
where length <
(select max(length)
from river)));
솔루션에서는 이렇게 더 짧게 구현했다.
select r.name
from river r
where (select count(length)
from river
where length > r.length) = 2;
2. distinct가 없으면 결과값이 더 크게 나온다.
-- exists로 구현
select distinct c.name
from city c
where exists (select name
from province p
where c.name=p.name);
-- in으로 구현
select distinct c.name
from city c
where c.name in (select name
from province p
where c.name=p.name);
-- join으로 구현
select distinct c.name
from city c join province p on c.name=p.name;
3. datascientistchocobread.tistory.com/44에서 이미 한번 left outer join에 대해서 나왔었다.
여기서도 동일하게, 전체 국가명은 다 필요하고 다만 강의 수와 호수의 수만 세면 되기 때문에 left outer join을 써서 전체 국가명 리스트는 그대로 유지해준다.
select distinct c.name, count(gl.lake), count(gr.river)
from country c left outer join geolake gl on c.code=gl.country
left outer join georiver gr on c.code=gr.country
group by c.name;
'Database SQL > Exercise' 카테고리의 다른 글
데이터베이스시스템 2019년도 중간고사 문제 및 답안[Q1~Q4] (0) | 2021.04.28 |
---|---|
View 구현 예제 (0) | 2021.04.27 |
SQL query 구현 예제 (0) | 2021.04.25 |
SQL query 이해 예제 (2) | 2021.04.24 |
Relational Algebra(RA), Domain Relational Calculus(DRC) 쿼리 예제 (0) | 2021.04.23 |
Comments