--[정답1] count(*) 와 where절 활용시
select
name,
count(*) as count #count(name)
from animal_ins
where name is not null
group by name #집계함수(컬럼)을 쓰려면 [group by 컬럼]이 꼭 필요!
having count(*) >= 2
order by name;
-- [정답2] count(name) 활용 시
select
name,
count(name) as count #count(name)은 null값을 제외하고 카운팅!
from animal_ins
where name is not null <- 불필요. count(name)은 name값이 null이면 카운팅 안함
group by name #집계함수(컬럼)을 쓰려면 [group by 컬럼]이 꼭 필요!
having count(name) >= 2
order by name;
*WHERE, HAVING 차이
https://dydatablog.tistory.com/37
[SQL]코딩순서와 실행 순서, WHERE, HAVING 차이
[Cording order]1. SELECT2. FROM3.JOIN4. ON5. WHERE6. GROUP BY7. HAVING8. ORDER BY9. LIMIT [Execution order]1. FROM2. ON3. JOIN4. WHERE5. GROUP BY6. HAVING7. SELECT8. DISTINCT9. ORDER BY10. LIMIT WHERE, HAVING 차이WHERE 절은 그룹화 전에 조
dydatablog.tistory.com
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY 1
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1
SELECT MIN(DATETIME)
FROM ANIMAL_INS
--또는
SELECT DATETIME
FROM ANIMAL_INS
ORDER BY 1
LIMIT 1
SELECT ANIMAL_ID,
NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
ORDER BY ANIMAL_ID
https://dydatablog.tistory.com/36
[SQL]WHERE절의 부정연산자_ !=, <>, NOT,NULL값이 아닐 때
같지 않다.!= : 같지 않다 : 같지 않다 (ISO표준 표기법)NOT 컬럼명 = ~보다 크지 않다. NOT 컬럼명 > A와 B 값 사이에 있지 않다. NOT BETWEEN A AND B list 값과 일치하지 않는다. NOT IN (list) NULL값을 갖지
dydatablog.tistory.com
SELECT ANIMAL_ID,
NAME,
DATETIME
FROM ANIMAL_INS
ORDER BY NAME,
DATETIME DESC
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE ANIMAL_TYPE = 'Dog'
AND NAME LIKE '%el%'
ORDER BY NAME
SQL 라이브 세션 과제
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE (SKILL_1= 'Python')OR (SKILL_2='Python') OR (SKILL_3='Python')
ORDER BY ID
--또는
select id
, email
, first_name
, last_name
from developer_infos
where 'Python' in (skill_1, skill_2, skill_3)
order by id
달리기반 과제 Lv.4
1. 고객별로 주문 건수와 총 주문 금액을 조회하는 SQL 쿼리를 작성해주세요.
출력 결과에는 고객 이름, 주문 건수, 총 주문 금액이 포함되어야 합니다. 단, 주문을 한 적이 없는 고객도 결과에 포함되어야 합니다.
SELECT CustomerName ,
COUNT(CustomerName) AS 'OrderCount',
COALESCE (SUM(TotalAmount),0) AS 'TotalSpent'
FROM Customer c LEFT JOIN Orders o on c.CustomerID = o.CustomerID
GROUP BY CustomerName ;
2. 나라별로 총 주문 금액이 가장 높은 고객의 이름과 그 고객의 총 주문 금액을 조회하는 SQL 쿼리를 작성해주세요.
[복습 필요!!]
SELECT
c.Country,
c.CustomerName AS Top_Customer,
SUM(o.TotalAmount) AS Top_Spent
FROM
Customers c
JOIN
Orders o ON c.CustomerID = o.CustomerID
GROUP BY
c.Country, c.CustomerName
HAVING
SUM(o.TotalAmount) = (
SELECT
MAX(SumSpent)
FROM
(SELECT
SUM(o2.TotalAmount) AS SumSpent
FROM
Customers c2
JOIN
Orders o2 ON c2.CustomerID = o2.CustomerID
WHERE
c2.Country = c.Country
GROUP BY
c2.CustomerID) AS Subquery
);
'내일배움캠프 > TIL' 카테고리의 다른 글
[TIL]241129_코드카타 (2) | 2024.11.29 |
---|---|
[TIL] 241128_코드카타,RAND함수 (5) | 2024.11.28 |
[TIL]SQL코드카타, SQL과제Lv.2,3 (0) | 2024.11.26 |
[TIL]241125_SQL자격증준비 (1) | 2024.11.25 |
[TIL]SQL과제_Lv1. 데이터 속 김서방 찾기 (0) | 2024.11.22 |