2023. 6. 11. 22:30ㆍHackerRank-My SQL
Draw The Triangle 1 | HackerRank
Draw the triangle pattern using asterisks.
www.hackerrank.com
문제
The following pattern represents P(5):
* * * * *
* * * *
* * *
* *
*
Write a query to print the pattern P(20).
코드
SET @NUMBER = 21;
SELECT REPEAT('* ', @NUMBER := @NUMBER - 1 )
FROM INFORMATION_SCHEMA.TABLES
LIMIT 20;
- INFORMATION_SCHEMA.TABLES 를 해석하지 못하는 미천한 밑천 ㅋㅋㅋㅋㅋㅋㅋ
WITH RECURSIVE temp AS (
SELECT 1 AS K
UNION ALL
SELECT K+1
FROM temp
WHERE K < 20
)
SELECT REPEAT("* ", K) FROM temp
ORDER BY K DESC
;
--SELECT REPEAT("* ", K) AS K2 FROM temp
--ORDER BY K2 DESC; 로 쓰는게 확실
노트
REPEAT 문
- REPEAT(string, number)
- CustomerName의 텍스트를 두 번 반복
SELECT REPEAT(CustomerName, 2)
FROM Customers;
문자열 "SQL Tutorial"을 2번 반복
SELECT REPEAT("SQL Tutorial", 2);
SQL TutorialSQL Tutorial
사용자 정의 변수
SET @START = 15, @FINISH = 20;
# 또는
SELECT @START := 15, @FINISH := 20;
- 등호(=)은 비교 연산자로도 쓰이기 때문에 SELECT문으로 변수를 선언할 때는 콜론과 등호(:=) 를 써줘야 함
SET @START = 15, @FINISH = 20;
SELECT * FROM EMPLOYEES
WHERE ID BETWEEN @START AND @FINISH; # EMPLOYEES테이블에서 ID가 15와 20 사이인 모든 ROW를 조회
WITH RECURISVE문
WITH RECURSIVE [테이블명1] AS (
SELECT [초기값] AS [별칭] # 초기값. 한 번만 실행된다.
UNION ALL # 이 밑으로 쓰이는 것 재귀를 하는 식이다~ 라고 알려주는 듯?
SELECT [별칭을 이용한 계산식] # 여기로 재귀 한다.
FROM [테이블명1] # RECURSIVE 해주는 가상 테이블명 과 같아야 한다.
WHERE [제어문] ) # 재귀 조건(정지 조건): 조건이 참이면 재귀하고, 거짓이면 멈춘다
SELECT * FROM [테이블명1];
- WITH문 처럼 가상의 테이블을 메모리에 저장 해둠
- UNION 사용은 필수임
- subquery는 반드시 RECURSIVE하는 테이블을 참조해야 함
- 재귀를 멈출 제어문이 필수임
- 가상의 테이블을 구성하면서 그 자신(가상의 테이블)을 참조하여 값을 결정할 때 유용함
- 컬럼이 1부터 10까지의 값을 갖는 가상 테이블 생성
WITH RECURSIVE wtf AS (
SELECT 1 AS K
UNION ALL
SELECT K + 1
FROM wtf
WHERE K < 10 ) # k=9 일때 재귀를 마지막으로 해서 10을 조회하고서 재귀 종료. 사실 K 값이 증가한다는 식은 안보이지만 그런가보다 하고 넘어가자.
SELECT * FROM wtf; # 혹은 SELECT k FROM wtf; 로 써도 됨
1 # 컬럼 명은 K 임
2
3
4
5
6
7
8
9
10
참조
[삼쾌한 IT강의] MySQL 변수 종류 및 사용법
안녕하세요! 삼쾌한 IT강의 백소라강사 입니다. 아래와 같이 MySQL 의 변수 종류와 사용법을 정리했습니다. 1. 사용자 정의 변수 1-1. 사용자 정의 변수 선언 및 초기화 SET @변수이름 = 대입값; 혹은 S
three-pleasure.tistory.com
[MYSQL] 📚 RECURSIVE (재귀 쿼리)
WITH RECURSIVE 문 (재귀 쿼리) 프로그래밍에서 재귀 함수를 들어봤듯이, SQL에서도 재귀 쿼리 기법이 존재한다. 다만 문법이 굉장히 해괴한데 우선 WITH RECURSIVE 쿼리문을 작성하고 내부에 UNION을 통해
inpa.tistory.com
[MySQL] MySQL 문자열 함수 [3]
연관글 [MySQL] MySQL 문자열 함수 [1] [MySQL] MySQL 문자열 함수 [2] REPEAT(문자열, 반복횟수) 문자열을 횟수만큼 반복합니다. 1 SELECT REPEAT('김치참치덮밥', 2); cs REPLACE(문자열, 대상 문자열, 바꿀 문자열)
dololak.tistory.com
'HackerRank-My SQL' 카테고리의 다른 글
Prepare > SQL > Aggregation > Weather Observation Station 20 (0) | 2023.06.14 |
---|---|
Prepare > SQL > Alternative Queries > Draw The Triangle 2 (0) | 2023.06.12 |
Prepare > SQL > Advanced Join > Interviews (0) | 2023.06.08 |
Prepare > SQL > Advanced Join > Symmetric Pairs (0) | 2023.06.06 |
Prepare > SQL > Advanced Join > Placements (0) | 2023.06.06 |