ORDER BY는 SELECT 문에서 나온 결과를 정렬할 때 사용한다.
- 오름차순 (Ascending)
- 내림차순 (Descending)
이 두가지가 존재하고, 각각의 앞자리를 따서 ASC(오름차순), DESC(내림차순)이라고 명시합니다.
만약에 SQL 값에서 숫자가 아닌 문자일시, 알파벳 순으로 정렬합니다.
- 오름차순 : 작은 값에서 큰 값으로 (1, 2, 3, 4) (A, B, C)
- 내림차순 : 큰 값에서 작은 값으로 (1, 2, 3, 4) (A, B, C)
SELECT [id, name]
FROM [table_name]
ORDER BY [id]
기본값은 오름차순으로 위의 SQL 코드처럼 따로 명시를 하지 않을 경우 (오름차순)으로 정렬되고,
내림차순의 정렬을 원할 경우에는 (내림차순)을 명시하면 된다.
ORDER BY 값을 여러 개 주면, 나열된 순서대로(왼쪽부터) 정렬을 시작한다.
SELECT [id, name]
FROM [table_name]
ORDER BY [id] ASC, [name] DESC
아래는 MySQL 문제이다.
최고의 근무일을 찾아라 - 난이도 1
팁을 많이 받을 수 있는 요일-
- Group by 로 요일에 따라서 그룹을 묶어준다.
요일 별 팁 총액
- sum 함수를 사용
팁 총액은 소수점 셋째자리에서 반올림
- round(값, 3) 사용
팁이 가장 많았던 요일만
- max() 함수를 사용
처음에 max(sum()) 형식으로 사용하려고 했으나, 실패
처음에 접근법은 해당 열에서 가장 큰 값을 찾아서, 그 값만 출력하는 이중 쿼리문을 생각했는데,
더 간단하게 하는 방법이 있었다.
해결법
아래와 같이 순서대로 정렬을 시킨 후,
1개만 출력한다고 제한을 걸어두면 되는 것이었다.
SELECT
day,
ROUND(SUM(tip), 3) AS tip_daily
FROM
tips
GROUP BY
day
HAVING
SUM(tip)
ORDER BY
tip_daily DESC
limit
1
간단하게 보는 능력을 배워야할 것 같다.
플러스로 뭔가 파생되어있는 문제도 풀었다.
이거는 거의 몇분만에 풀었다.
아래도 그냥 같이 풀면 좋을듯
레스토랑 웨이터 팁 분석 - 난이도 2
select
day,
time,
round(avg(tip), 2) as avg_tip,
round(avg(size), 2) as avg_size
from
tips
GROUP by
time,
day
HAVING
avg(tip)
order by day, time
참고한 사이트
- max(sum()) 해결법 : https://stackoverflow.com/questions/19671763/how-to-use-sql-maxsum-function
- SQL 오름차순 내림차순 정리 : https://ejxousiva.tistory.com/10
'공부' 카테고리의 다른 글
vpn이란 (0) | 2024.08.30 |
---|---|
[Learning Spark] Chapter 2 : 아파치 스파크 다운로드 및 시작 (0) | 2024.08.22 |
[SolveSQL] 우리 플랫폼에 정착한 판매자 1, SQL에서 중복값 찾아내는 방법 (0) | 2024.08.07 |
[SolveSQL] 두 테이블 결합하기, SQL 조인(JOIN) 정리 (0) | 2024.07.30 |
[SolveSQL] 다음날도 서울숲의 미세먼지 농도는 나쁨, with as 문 (0) | 2024.07.28 |