Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- SWIFT
- 애플 디벨로퍼 아카데미 후기
- iOS 개발 오류
- OS
- Swift 디자인패턴
- StateObject
- sqoop
- ObservableObject
- 앱 비교 프로젝트
- 데이터베이스
- Apple Developer Academy @ POSTECH
- useReducer
- 숭실대
- Swift 기능
- 애플 디벨로퍼 아카데미
- 애플 아카데미 후기
- apple developer academy 후기
- react
- Swift 문법
- 네이버 부스트캠프
- 제앱소
- 치지직
- swift문법
- 애플 디벨로퍼 아카데미 21주차 회고
- global soop
- 운영체제
- 네이버 치지직
- 데이터베이스 공부
- ObservedObject
- 소프트웨어분석및설계
Archives
- Today
- Total
사과하는 제라스
SQL Examples 본문
목차
728x90
반응형
108pg
- Find the number of tuples of "student" relation.
Select count(*)
from student;
- Find the average salary, maximum salary, and minimum salary of professors in CS department.
Select avg(salary), max(salary), min(salary)
from professor
where deptName='CS';
- Find the number of distinct professors who teach a course in the Spring 2010 semester.
Select count(distinct pID)
from teaches
where semester='Spring' and year=2010;
109pg
- Find the number of professors in each department.
Select deptName, count(*)
from professor
group by deptName;
- Find the average salary of professors in each department.
Select deptName, avg(salary)
from professors
group by deptName;
110pg
Select deptName, pID, avg(salary) // pID가 올 수 없음. 'group by'의 속성이나 집계함수만 가능함!
from professor
group by deptName;
Select avg(salary) // 이렇게 'group by'의 속성이 없어도 괜찮음.
from professor
group by deptName;
- Find the names and average salaries of all departments whose average salary is greater than 6900.
Select deptName, avg(salary)
from professor
group by deptName
having avg(salary)>6900;
111pg
- employee(name, salary, dno) -name이 PK
- department(dnumber, dname, location) -dnumber가 PK
- For each department having more than five employees,
retrieve the department name and the number of employees making more than $40,000
Select dname, count(*) //잘못된 쿼리문
from employee, department
where dno=dnumber and salary>40000 //조인하고 $40,000보다 많이 버는 사람들만 남긴 후
group by dname //dname으로 그룹핑
having count(*)>5; //$40,000보다 많이 버는 사람들이 5명보다 많은 그룹을 추출
Select dname, count(*) //올바른 쿼리문
from employee, department
where dno=dnumber and //조인하고
dno in (Select dno from employee group by dno having count(*)>5) and //dno가 5개보다 많은 tuple들에 대해서 추출하고
salary>40000 //$40,000보다 많이 버는 사람들 tuple을 추출한 후
group by dname //dname으로 그룹핑
117pg
- Get the name of professor who has the same salary as the professor with pID 10.
Select name
from professor
where salary =
(Select salary
from professor
where pID=10)
and pID <> 10;
- Get the name of professor who earns the maximum salary of the CS department.
Select name
from professor
where salary=
(Select max(salary)
from professor
where deptName='CS');
118pg
- Get names and salaries of professor who has ID with 10 or 21 or 22.
Select name, salary
from professor
where pID in (10,21,22);
또는
Select name, salary
from professor
where pID=10 or pID=21 or pID=22;
- Find course numbers offered in Fall 2009 and in Spring 2010.
Select distinct cID //2009Fall과 2010Spring에 둘 다 개설 될 시 중복이 생기니 distinct함.
from teaches
where semester='Fall' and year=2009
and cID in
(Select cID
from teaches
where semester='Spring' and year=2010);
또는
(Select cID from teaches where semester='Fall' and year=2009)
intersect
(Select cID from teaches where semester='Spring' and year=2010);
- Find course numbers offered in Fall 2009 but not in Spring 2010.
Select distinct cID
from teaches
where semester='Fall' and year=2009 and
cID not in
(Select cID
from teaches
where semester='Spring' and year=2010);
혹은
(Select cID from teaches semester='Fall' and year=2009)
except
(Select cID from teaches semester='Spring' and year=2010);
119pg
- Find the total number of distinct students who have taken any courses
taught by the professor with pID 10.
Select count(distinct sID)
from takes
where (cID, semester, year) in //takes랑 teaches가 가진 동일한 속성들은 모두 join해야 함.
(Select cID, semester, year
from teaches
where pID=10);
또는
Select count(distinct sID)
from takes,teaches
where takes.cID=teaches.cID and
takes.semester=teaches.semester and
takes.year=teaches.year and
pID=10;
121pg
- Find professor names with salary greater than that of some (at least one) professor
in CS department.
Select distinct T.name
from professor as T, professor as S
where T.salary > S.salary and S.deptName='CS';
또는
Select name
from professor
where salary > some(Select salary from professor where deptName='CS');
- Find the professor names whose salary is greater than the salary of all professors
in CS department
Select name
from professor
where salary > all(Select salary from professor where deptName='CS');
122pg
- Find all course numbers taught in both the Fall 2009 semester
and the Fall 2010 semester.
Select S.cID
from teaches as S
where S.semester='Fall' and S.year=2009 and
exists
(Select *
from teaches as T
where T.semester='Fall' and T.year=2010 and S.cID=T.cID);
123pg
- Find all student IDs and names who have taken all courses offered in 'CS' department.
Select S.sID, S.name
from student as S
where not exists(
(Select cID
from course
where deptName='CS')
except
(Select T.cID
from takes as T
where S.sID=T.sID)
)
124pg
- Find all courses that were offered at most once in 2009.
Select C.cID
from course as C
where unique (
Select T.cID
from teaches as T
where C.cID=T.cID and T.year=2009
)
Select C.cID
from course as C
where 1>=
(Select count(T.cID)
from teaches as T
where S.cID=T.cID and T.year=2009
);
125pg
- Find department name and the average salary of the professors of the department
where the average salary is greater than 6900.
Select deptName, avgSalary
from
(Select deptName, avg(salary) as avgSalary
from professor
group by deptName
)
where avgSalary>6900;
또는
Select deptName, avgSalary
from
(Select deptName, avg(salary)
from professor
group by deptName)
as deptAvg(deptName, avgSalary)
where avgSalary>6900;
- Find the maximum total salary of department across all departments.
Select max(sumSalary)
from
(Select deptName, sum(salary)
from department
group by deptName)
as deptTotal(deptName, sumSalary);
또는
Select sum(salary)
from professor
group by deptName
having sum(salary) > all(Select sum(salary) from professor group by deptName);
126pg
- Find professor names, their salaries, the average salary of their departments.
Select P1.name, P1.salary, avgSalary
from professor P1,
lateral
(Select avg(P2.salary) as avgSalary
from professor as P2
where P1.deptName=P2.deptName);
Select name, salary, avg(salary) //Syntax Error → name, salary, avg(salary) 개수가 다름
from professor
group by deptName;
- Find the department name with the maximum budget along with its budget.
With
maxBudget(value) as
(Select max(budget)
from department)
Select deptName, budget
from department, maxBudget
where department.budget=maxBudget.value;
또는
Select deptName, budget
from department
where budget = (Select max(budget) from department);
127pg
- Find all departments where the total salary is greater than
the average of the total salary at all departments
With
Total(deptName,value) as
(Select deptName,sum(salary)
from professor
group by deptName),
avgTotal(value) as
(Select avg(value)
from Total)
Select deptName
from Total,avgTotal
where Total.value>avgTotal.valuel;
- Find department names along with the number of professors.
Select deptName,(Select count(*)
from professor p1
where p1.deptName = d1.deptName)
from department d1;
128pg
- Find the rank of each student.
studentGrades(ID, deptName, GPA)
Select ID, rank() over (order by GPA desc) as sRank from studentGrades
order by sRank;
또는
Select ID, (1+ (Select count(*) from studentGrades B where B.GPA>A.GPA)) as sRank
from studentGrades A
order by sRank;
129pg
- Find the rank of students within each department
Select ID, deptName, rank() over(partition by deptName order by GPA desc) as sRank
from studentGrades
order by deptName, sRank;
728x90
반응형
'대학 전공 공부 > 데이터베이스1' 카테고리의 다른 글
8. 응용 개발 (0) | 2022.05.16 |
---|---|
5. SQL 2 (0) | 2022.04.25 |
3. SQL 1 - DML (0) | 2022.04.25 |
3. SQL 1 - DDL (0) | 2022.04.25 |
3. SQL 1 - Intro (0) | 2022.04.24 |