Prepare > SQL > Alternative Queries > Draw The Triangle 1

2023. 6. 11. 22:30HackerRank-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