열의 마지막 세 문자를 기준으로 정렬할 쿼리
75점 이상의 점수를 받은 학생의 이름을 조회합니다.각 이름의 마지막 3자로 출력 순서를 지정합니다.둘 이상의 학생이 모두 마지막 3자로 끝나는 이름(예: "Bobby", "Robby" 등)을 가지고 있는 경우, 2차적으로 ID 오름차순으로 정렬합니다.
Students 테이블에는 다음 열이 있습니다.
ID , NAME , MARKS
입력 예:
id name marks
1 ashley 81
2 samantha 75
3 julia 76
4 belvet 84
샘플 출력:
Ashley
Julia
Belvet
설명:
애슐리, 줄리아, 벨벳만이 가지고 있다.marks > 75
세 , 중복은 없습니다'ley' < 'lia' < 'vet'
.
올바른 출력은 다음과 같습니다.
학생 중에서 이름을 선택합니다.여기서 marks>
기판(이름, -3, 3)별 순서, id;
MySQL의 경우 다음을 사용해 보십시오.
SELECT NAME FROM STUDENTS WHERE Marks > 75 ORDER BY RIGHT(NAME, 3), ID ASC;
), 、 3 [ , etc ]는, 오름차순ID 에 .BOBBY 、 Robby ) bobby 、 bobby를 、 bobby를를를 를 bobby 。★★★★★★★★★★★★★★★★★★.ORDER BY ID
요합니니다다
MySQL의 경우:
SELECT Name FROM STUDENTS WHERE Marks>75 ORDER By SUBSTRING(Name,-3,LENGTH(Name)),ID
레퍼런스: MySQL SUBSTRING() 함수
Oracle의 경우:
SELECT Name FROM Students WHERE Marks > 75 ORDER BY substr(Name, -3), ID;
다음 명령을 사용할 수 있습니다.
SELECT * FROM students ORDER BY RIGHT(name, 3), ID
아래 쿼리를 사용해 볼 수 있습니다.
SELECT NAME FROM STUDENTS WHERE MARKS > 75 ORDER BY SUBSTRING(NAME,-3), ID;
메모: 이것은 MySQL에서 동작합니다.
용도:
select name from students where marks > 75 order by right(name, 3), ID;
DISTINCT
제거해야 합니다. 않으면 여러 학생입니다.NAME
시당합합니니다
SELECT NAME
FROM STUDENTS
WHERE MARKS > 75
ORDER BY SUBSTRING(NAME, LEN(NAME)-2, 3), ID;
아래의 것을 시험해 보세요.
SELECT Name FROM STUDENTS WHERE Marks >75 ORDER BY substr(name,-3,3),Id;
다음 쿼리는 SQL Server에 대해 작동합니다.
SELECT name FROM Students
WHERE marks > 75
ORDER BY SUBSTRING(name, len(name)-2, LEN(name)), id;
액티브 리딩 [https://en.wikipedia.org/wiki/Microsoft_SQL_Server]
SELECT NAME FROM STUDENTS WHERE MARKS > 75 ORDER BY RIGHT(NAME, 3), ID ASC;
MySQL 용입니다.
가장 좋은 것은 다음과 같습니다.
출력 쿼리
select name from students where marks > 75 ORDER BY substr(name,-3) asc, id asc;
Oracle 11g 셋업
CREATE TABLE students ( id, name, marks ) AS
SELECT 1, 'Alice', 76 FROM DUAL UNION ALL
SELECT 2, 'Beatrice', 76 FROM DUAL UNION ALL
SELECT 3, 'Carol', 78 FROM DUAL UNION ALL
SELECT 4, 'Denis', 80 FROM DUAL UNION ALL
SELECT 5, 'Edward', 43 FROM DUAL UNION ALL
SELECT 6, 'Fiona', 100 FROM DUAL UNION ALL
SELECT 7, 'Gareth', 75 FROM DUAL;
쿼리:
SELECT Name
FROM students
WHERE Marks > 75
ORDER BY SUBSTR( name, -3, 3 ), ID;
결과:
NAME
--------
Alice
Beatrice
Denis
Fiona
Carol
Oracle의 경우
SELECT NAME
FROM STUDENT
WHERE MARKS>75
ORDER BY SUBSTR(NAME,-3),ID;
SQL Server:
SELECT Name from STUDENTS
WHERE MARKS > 75
ORDER BY RIGHT(NAME, 3), RIGHT(NAME, 2), RIGHT(NAME, 1), ID
나한텐 잘 먹혔어!
아래 쿼리를 사용해 주십시오.SQL Server에서는 정상적으로 동작합니다.
SELECT
name
FROM
students
WHERE
marks > 75
ORDER BY
RIGHT(name, 3) ASC
, id ASC
SQL Server의 경우 다음을 수행합니다.
SELECT NAME FROM STUDENTS WHERE Marks > 75 ORDER BY SUBSTRING(NAME, LEN(NAME)-2, 3), ID ASC;
될 요.SUBSTR
MySQL의 기능:
SELECT `name`
FROM `students`
WHERE `marks` > 75
ORDER BY SUBSTR(`name`, -3), ID ASC;
SUBSTR(name, -3)
는 학생 테이블의 이름 열에 있는 마지막 세 문자를 선택합니다.
HackerRank에 이 두 가지 솔루션을 제출했더니 수락되었습니다.
MySQL
SELECT name FROM students WHERE marks > 75 ORDER BY SUBSTRING(name, -3, 3), id
오라클
SELECT name FROM students WHERE marks > 75 ORDER BY SUBSTR(name, -3, 3), ID;
설명:SUBSTRING() 또는 SUBSTRING() 함수의 구문은 다음과 같습니다.
SUBSTRING ( string , start _ position , length )여기서 length는 문자열에서 추출되는 서브스트링의 길이입니다.
따라서, 위의 쿼리는 사전 편찬적으로 그들의 이름의 마지막 3자를 기준으로 75점 이상을 받은 학생들의 이름을 나열합니다.두 명 이상의 학생이 이름에 동일한 마지막 3자를 가지고 있는 경우(예:Bobby, Robby)는 아이디를 기준으로 오름차순으로 이름을 출력합니다.
이 쿼리는 나에게도 유효합니다.
select Name from STUDENTS where Marks > 75 ORDER BY SUBSTRING(NAME, LENGTH(NAME)-2, 3), ID;
MySQL의 경우:
SELECT
name
FROM
STUDENTS
WHERE
marks > 75
ORDER BY
RIGHT(name, 3),
RIGHT(name, 2),
id;
HackerRank SQL 질문입니다.
select distinct Name from STUDENTS where Marks > 75
order by substr(Name, -3, length(Name)), ID
용도:
SELECT NAME FROM STUDENTS WHERE marks > 75 ORDER BY SUBSTRING(name, -3, 3), id;
SUBSTRING(name, -3, 3)
컬럼(이름)의 마지막 세 글자를 사용하여ORDER BY
열은 마지막 세 문자를 기준으로 사전순으로 정렬됩니다.마지막 세 글자가 같을 경우 ID에 따라 순서가 매겨집니다.
MySQL의 경우 다음을 시도할 수 있습니다.
select Name from STUDENTS where Marks > 75 order by RIGHT(name, 3), ID;
Oracle의 경우 다음을 시도해 보십시오.
select Name from STUDENTS where Marks > 75 order by substr(name, -3), ID;
SELECT Name FROM STUDENTS
WHERE
MARKS > 75
ORDER BY LOWER(SUBSTR(NAME, - 3, 3)) ASC , ID ASC;
mySql에서 동작합니다.
select Name from STUDENTS where Marks > 75 order by substr(Name, -3, 3), ID;
DB2의 경우:
select name from students where marks > 75 order by substr(name,length(name)-2,3),ID ASC;
여기 있는 다른 사람들처럼 STUBT() 대신 RIGHT() 함수를 사용했는데 MySQL을 사용하여 작동했습니다.다음은 완전한 SQL 코드입니다.
SELECT name FROM students WHERE marks > 75 ORDER BY (RIGHT(name, 3)), id;
ORACLE SQL에서는 여기에 나와 있는 mysql 답변을 기반으로 합니다.
SELECT NAME FROM STUDENTS WHERE MARKS > 75 ORDER BY SUBSTR (NAME, LENGTH(NAME)-2, 3) ASC;
이 테스트는 RackerRank에서 2022년 4월 25일에 실시했습니다.코드는 다음과 같습니다.
select distinct name from students where marks > 75 order by right(name,3), id asc;
다음의 에러가 표시됩니다.
ERROR 3065 (HY000) at line 4: Expression #2 of ORDER BY clause is not in SELECT list, references column 'students.ID' which is not in SELECT list; this is incompatible with DISTINCT
선택 항목에 ID를 추가했을 때(select id, name...
) 「 」를 취득합니다.wrong answer
그 결과입니다.예상되는 답변에는 다음이 포함되어 있지 않습니다.id
들판.
내가 얻을 수 있는 유일한 방법은
select main.name from
(select distinct id, name from students where marks > 75 order by right(name,3), id asc) as main;
이것을 시험해 보세요.
SELECT NAME FROM STUDENTS WHERE MARKS > 75 ORDER BY SUBSTRING (NAME, LEN(NAME)-2 ,LEN(NAME)), ID
언급URL : https://stackoverflow.com/questions/34832734/query-to-order-by-the-last-three-characters-of-a-column
'programing' 카테고리의 다른 글
"ErrorUtils caughed error" - Wordpress Facebook 플러그인에서 Chrome 콘솔 오류 발생 (0) | 2023.03.31 |
---|---|
MongoDB Compass 툴에서 업데이트($set) 쿼리를 실행하는 방법 (0) | 2023.03.31 |
리덕스는 퍼브/서브 또는 옵서버 패턴으로 볼 수 있습니까? (0) | 2023.03.31 |
TypeScript 인터페이스 속성 유형을 "해동"할 수 있는 방법이 있습니까? (0) | 2023.03.31 |
Angular에서 모달 창을 호출하는 중JavaScript를 사용하는 JS 부트스트랩 UI (0) | 2023.03.31 |