web-dev-qa-db-ja.com

列の最後の3文字で並べ替えるクエリ

75点以上の成績を収めた学生の生徒の名前を照会します。各名前の最後の3文字で出力を並べ替えます。 2人以上の生徒の名前が最後の3文字が同じである場合(例:「Bobby」、「Robby」など)、IDの昇順で2番目に並べ替えます。

STUDENTSテーブルには次の列があります。

ID , NAME , MARKS

入力例:

id         name     marks
1          ashley   81
2          samantha 75
3          Julia    76
4          belvet   84

出力例:

Ashley
Julia
Belvet

説明:

アシュリー、ジュリア、ベルベットだけがMarks > 75。それぞれの名前の最後の3文字を見ると、重複はなく、'ley' < 'lia' < 'vet'

これは正しい出力です:

マークが75以上の学生から名前を選択

substr(name、-3,3)、idによる順序。

9
Sonam Kapoor

MySQLでこれを試してください:

SELECT NAME FROM STUDENTS WHERE Marks > 75 ORDER BY RIGHT(NAME, 3), ID ASC;
12
hizbul25

2人以上の生徒の両方の最後の3文字が同じ名前(Bobby、Robbyなど)である場合は、IDの昇順に並べ替えます。それが理由です ORDER BY IDが必要です

Mysqlの場合

SELECT Name FROM STUDENTS WHERE Marks>75 ORDER By SUBSTRING(Name,-3,LENGTH(Name)),ID

ref:-http://www.w3resource.com/mysql/string-functions/mysql-substring-function.php =

Oracleの場合

SELECT Name FROM Students WHERE Marks>75 ORDER BY substr(Name,-3),ID;
5
Rohan Khude

あなたはこのコマンドを試すことができます:

SELECT * FROM students ORDER BY RIGHT(name, 3), ID

お知らせ下さい。 ;-)。

5
antonin bouchal

DISTINCTは削除する必要があります。削除しない場合、同じNAMEを持つ複数の学生は無視されます。

SELECT NAME
FROM STUDENTS
WHERE MARKS > 75
ORDER BY SUBSTRING(NAME, LEN(NAME)-2, 3), ID;
4

以下のクエリを試すことができます:

SELECT NAME FROM STUDENTS WHERE MARKS > 75 ORDER BY SUBSTRING(NAME,-3), ID;

注:これはMySQLで動作します

2
Dharmil Thakkar

一番いいのはこんな感じ

出力のクエリ

select name from students where marks>75 ORDER BY substr(name,-3) asc , id asc;
1

親切に以下のものを試してください、

SELECT Name FROM STUDENTS WHERE Marks >75 ORDER BY substr(name,-3,3),Id;
1
Praveen Kumar C

ms SQlサーバーで正常に動作するクエリ.itを試してください

SELECT 
     name 
FROM
     students 
WHERE
     marks > 75 
ORDER BY
     RIGHT(name, 3) ASC
   , id ASC

MS SQLサーバー

SELECT Name from STUDENTS
WHERE MARKS>75
ORDER BY RIGHT(NAME ,3),RIGHT(NAME ,2),RIGHT(NAME ,1), ID

私と一緒にうまくいきました!ここでは3つしかありませんが、もっと大きな数に変更できるので、誰か他のショートカットを教えてください。

1
Ashwini M

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 
0
MT0
SELECT NAME FROM STUDENTS WHERE MARKS > 75 ORDER BY RIGHT(NAME, 3), ID ASC;

mYSQLの場合。

0
Nishit

MySQLの場合:

SELECT 
  name 
FROM 
  STUDENTS 
WHERE 
  marks > 75 
ORDER BY 
  RIGHT(name, 3), 
  RIGHT(name, 2), 
  id;
0

これはmysqlのSUBSTR関数を使用して可能性があります

_SELECT `name`
FROM `students`
WHERE `marks` > 75
ORDER BY SUBSTR(`name`, -3), ID ASC;
_

SUBSTR(name, -3)これは、生徒のテーブルの名前列の最後の3文字を選択します

0
Aashish Chaubey

mssqlの場合は試してください

SELECT NAME FROM STUDENTS WHERE Marks>75 ORDER BY SUBSTRING(NAME,LEN(NAME)-2,3), ID ASC;
0
dragonal

このクエリは私にも役立ちます

select Name from STUDENTS where Marks > 75 ORDER BY SUBSTRING(NAME, LENGTH(NAME)-2, 3), ID;
0

以下のクエリはMS SQL SERVERで機能します

SELECT name FROM Students 
WHERE marks > 75 
ORDER BY SUBSTRING(name,len(name)-2,LEN(name)), id;
0

Oracleの場合

SELECT NAME
FROM STUDENT
WHERE MARKS>75
ORDER BY SUBSTR(NAME,-3),ID;
0
Rahul Vedanta

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;を試してください。

0
Vikram Ojha

HackerRank SQLの質問。

select distinct Name from STUDENTS where Marks > 75
order by substr(Name,-3,length(Name)),ID
0
_SELECT NAME FROM STUDENTS WHERE marks > 75 ORDER BY SUBSTRING(name, -3, 3), id;
_

SUBSTRING(name, -3, 3)、このメソッドはcolumn(name)から最後の3文字を取得し、_ORDER BY_列を使用して、最後の3文字が同じである場合、最後の3文字に基づいて辞書式順序でソートされます[〜#〜] id [〜#〜]に従って順序付けられます。

0