로그인가입

등급이 깎여서 나간 회원

300점자료 16벌출제 dongbinna
11월 10일에 올라온 문제입니다.

문제

등급이 떨어진 뒤에 떠난 회원이 있는지 보려고 한다. 등록할 때의 등급과 탈퇴할 때의 등급을 견주면 알 수 있다.

등록할 때보다 탈퇴할 때 등급이 낮아진 회원의 이름과 탈퇴일, 탈퇴 등급을 등록 표의 이름 오름차순으로 조회하여라.

내보내는 것은 탈퇴 표의 값이고, 세우는 기준은 등록 표의 이름이다. 두 표에 같은 번호의 이름이 같으므로 두 이름은 같은 값이지만, 어느 표를 보고 세우는지를 적어 둔다.

첫째 벌에서의 결과

첫째 벌의 자료에 대하여 나와야 하는 결과입니다. 나머지 열다섯 벌에서는 값과 줄의 수가 다릅니다.

namedatetimegrade
김영희2012-11-14 21:00:002
나동빈2012-08-03 13:00:004
이순신2012-08-14 14:00:004

입력 조건

  • 이 문제의 자료에는 표가 둘 있습니다.

  • registered_member 는 지금 등록되어 있는 회원입니다.

  • | 칸 | 형 | 뜻 |

  • | --- | --- | --- |

  • | id | INTEGER | 회원 번호. 표 안에서 겹치지 않습니다 |

  • | name | VARCHAR(20) | 이름. 한 벌 안에서 겹치지 않습니다 |

  • | age | INT | 나이 |

  • | gender | VARCHAR(10) | 성별. '남성' 과 '여성' 두 가지이고, 한 벌에 둘 다 있습니다 |

  • | address | VARCHAR(100) | 사는 지역. 없을 수 있습니다(NULL) |

  • | grade | INT | 등급. 1 에서 5 사이의 정수이고, 큰 값이 높은 등급입니다 |

  • | datetime | DATETIME | 등록한 때. '2012-05-03 13:00:00' 꼴의 글이고 겹치지 않습니다 |

  • retired_member 는 탈퇴한 회원입니다. 칸은 registered_member 와 같고, datetime 이 탈퇴한 때를 뜻합니다. 탈퇴할 때의 등급이 등록할 때와 다를 수 있습니다.

  • 두 표에 같은 번호로 있는 줄은 같은 사람이고 이름도 같습니다. 탈퇴 표에만 있는 번호가 있을 수 있습니다. 등록 표에만 있는 번호도 있을 수 있습니다.

  • 이 문제는 두 표를 같은 번호로 맞춰서 grade 를 견줍니다.

  • 자료는 열여섯 벌이 있습니다. 표의 짜임과 칸은 열여섯 벌이 모두 같고, 들어 있는 값과 줄의 수가 벌마다 다릅니다. 낸 질의는 열여섯 벌 위에서 차례로 돌고, 열여섯 벌의 결과가 모두 맞아야 통과합니다.

  • 첫째 벌의 자료는 문제 화면의 [자료] 칸에 있습니다. 나머지 열다섯 벌은 화면에 안 그려지지만, 질의가 당신 브라우저에서 도는 구조라 열여섯 벌이 모두 당신 기기로 내려갑니다. 보시려면 보실 수 있습니다. 숨겨 둔 척하지 않겠습니다.

  • 그래서 한 벌이 아니라 열여섯 벌로 두었습니다. 한 벌이면 결과만 외워 적어도 통과합니다. 열여섯 벌이면 외워 적은 답이 그 벌에서만 맞습니다. 열여섯 벌의 답을 모두 손으로 적어 내는 길이 남아 있기는 한데, 낸 질의는 푼 사람 칸에 그대로 걸립니다. 막는 쪽보다 드러나는 쪽을 골랐습니다. 기대하는 결과의 지문은 서버만 가지고 있어서, 내보기 전에는 맞는지 확인할 수 없습니다.

출력 조건

  • 등급이 낮아진 회원의 이름과 탈퇴일, 탈퇴 등급을 이름 오름차순으로 출력합니다.

  • 칸은 name, datetime, grade 세 개이고 이 차례입니다. 세 칸 모두 탈퇴 표의 값입니다. datetime 은 탈퇴한 때이고, grade 는 탈퇴할 때의 등급입니다.

  • 채점은 칸 이름과 값과 줄 순서를 모두 견줍니다. 칸 이름이 다르면 값이 맞아도 틀린 것으로 봅니다. 그래서 필요한 칸 이름을 위에 적어 두었고, 그 이름이 나오도록 AS 를 쓰면 됩니다.

요구사항

  • 두 표에 같은 번호로 있는 회원만 봅니다
  • 등록 등급이 탈퇴 등급보다 큰 회원을 고릅니다
  • 칸은 탈퇴 표의 name, datetime, grade 세 개입니다
  • 이름 오름차순으로 세웁니다
  • 이 문제는 프롬프트가 아니라 질의(SQL)를 냅니다. 그 질의는 이 기기의 브라우저에 올라온 SQLite 에서 돌고, 서버로는 나온 결과표의 지문만 갑니다. 맞았는지는 서버가 정합니다.
  • 견주는 것은 글이 아니라 결과표입니다. 칸 이름과 값과 줄 순서를 모두 봅니다. 칸 이름이 다르면 값이 맞아도 틀린 것으로 봅니다.
  • 자료는 16벌입니다. 첫째 벌은 화면에 그려지고, 나머지도 질의가 당신 기기에서 돌기 때문에 모두 내려갑니다.
  • 자료 16벌의 결과가 모두 맞아야 해결입니다.
문제의 요구 사항을 잘 읽고 해결해 주세요. 단, 프롬프트 인젝션 등을 활용해 높은 점수를 받도록 조작하는 경우 적발 시 제재될 수 있습니다.

참고 사항

풀이에 도움이 되는 배경입니다. 지켜야 하는 규격은 위의 입출력 조건과 요구사항에 있습니다.

등급은 큰 값이 높은 등급입니다. 그래서 "낮아졌다" 는 등록 등급 > 탈퇴 등급 입니다. 부등호 방향을 거꾸로 적으면 등급이 오른 회원이 나옵니다.

두 표에서 같은 이름의 칸(name, datetime, grade)을 쓰므로, 어느 표의 칸인지 m.grade 처럼 앞에 붙여 적어야 합니다. 안 붙이면 어느 쪽인지 알 수 없다는 말이 나옵니다.

SQLite 로 풀기

당신 브라우저에서 돕니다자료 받는 중SQLite (sql.js)

답이 가져야 하는 칸 name, datetime, grade

자료

첫째 벌입니다. 나머지 0벌은 짜임이 같고 값이 다릅니다.

자료를 받고 있습니다

질의

돌려보기는 첫째 벌에서만 돌리고 서버에 보내지 않습니다. 맞았는지는 제출하셔야 알 수 있습니다.

이 문제를 푼 사람

아직 없습니다. 첫 번째가 되실 수 있습니다.