查询得分高于75分的学生中任何学生的姓名。按每个名称的最后三个字符排序输出。如果两个或更多学生的姓名都以相同的最后三个字符结尾(即:" Bobby"," Robby"等),则按升序ID对其进行二次排序。
学生表有以下栏目:
public void setLock(boolean locked, int finalJ, Button button) {
if (!locked) {
button.setBackgroundDrawable(getResources().getDrawable(R.drawable.dice_locked));
} else {
button.setBackgroundDrawable(getResources().getDrawable(R.drawable.dice));
}
isLocked[finalJ] = !isLocked[finalJ];
}
示例输入:
ID , NAME , MARKS
示例输出:
id name marks
1 ashley 81
2 samantha 75
3 julia 76
4 belvet 84
说明:
只有Ashley,Julia和Belvet Ashley
Julia
Belvet
。如果你查看每个名字的最后三个字符,就没有重复项和Marks > 75
。
这是正确的输出:
从标记为> 75
的学生中选择姓名按substr(name,-3,3),id;
排序
答案 0 :(得分:9)
尝试使用MySQL:
SELECT NAME FROM STUDENTS WHERE Marks > 75 ORDER BY RIGHT(NAME, 3), ID ASC;
答案 1 :(得分:5)
如果两个或更多学生的姓名都以相同的最后三个字符结尾(即:Bobby,Robby等),则按升序ID对其进行二次排序。这就是为什么需要ORDER BY ID
对于Mysql
SELECT Name FROM STUDENTS WHERE Marks>75 ORDER By SUBSTRING(Name,-3,LENGTH(Name)),ID
参考: - 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;
答案 2 :(得分:3)
DISTINCT
,否则将忽略具有相同NAME
的多名学生。
SELECT NAME
FROM STUDENTS
WHERE MARKS > 75
ORDER BY SUBSTRING(NAME, LEN(NAME)-2, 3), ID;
答案 3 :(得分:2)
您可以尝试以下命令:
SELECT * FROM students ORDER BY RIGHT(name, 3), ID
让我知道。 ; - 。)
答案 4 :(得分:2)
您可以尝试以下查询:
SELECT NAME FROM STUDENTS WHERE MARKS > 75 ORDER BY SUBSTRING(NAME,-3), ID;
注意:这个适用于MySQL
答案 5 :(得分:1)
使用MySQL中的SUBSTR
函数可能是这样:
SELECT `name`
FROM `students`
WHERE `marks` > 75
ORDER BY SUBSTR(`name`, -3), ID ASC;
SUBSTR(name, -3)
将在学生表的名称列中选择最后三个字符。
答案 6 :(得分:1)
请尝试以下查询。在SQl服务器
中工作正常SELECT
name
FROM
students
WHERE
marks > 75
ORDER BY
RIGHT(name, 3) ASC
, id ASC
答案 7 :(得分:1)
使用:
state() can only be called on class components
答案 8 :(得分:1)
请尝试以下一种,
SELECT Name FROM STUDENTS WHERE Marks >75 ORDER BY substr(name,-3,3),Id;
答案 9 :(得分:1)
最好的一个是这样的
查询输出
select name from students where marks>75 ORDER BY substr(name,-3) asc , id asc;
答案 10 :(得分:0)
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
答案 11 :(得分:0)
SELECT Name FROM STUDENTS
WHERE
MARKS > 75
ORDER BY LOWER(SUBSTR(NAME, - 3, 3)) ASC , ID ASC;
答案 12 :(得分:0)
我在HackerRank上提交了这两种解决方案,它们都被接受了:
MySQL
SELECT name FROM students WHERE marks > 75 ORDER BY SUBSTRING(name, -3, 3), id
Oracle
SELECT name FROM students WHERE marks > 75 ORDER BY SUBSTR(name, -3, 3), ID;
说明: 函数SUBSTRING()或SUBSTR()具有以下语法:
SUBSTRING( string , start_position , length )其中 length 是要从中提取的子字符串的长度字符串。
因此,以上查询按字典名称的最后3个字符,按字典顺序列出了得分超过75分的学生的姓名。如果两个或两个以上学生的名字中的最后3个字符相同(例如,鲍比,罗比),则他们的名字将按照ID的升序打印。
答案 13 :(得分:0)
对于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;
答案 14 :(得分:0)
对于MySQL:
SELECT
name
FROM
STUDENTS
WHERE
marks > 75
ORDER BY
RIGHT(name, 3),
RIGHT(name, 2),
id;
答案 15 :(得分:0)
SELECT NAME FROM STUDENTS WHERE marks > 75 ORDER BY SUBSTRING(name, -3, 3), id;
SUBSTRING(name, -3, 3)
,此方法将从列(名称)中取最后三个字符,如果最后三个字符相同,则在ORDER BY
列的帮助下将根据最后三个字符按字典顺序排序然后它会根据 ID 订购。
答案 16 :(得分:0)
for mssql试试吧
SELECT NAME FROM STUDENTS WHERE Marks>75 ORDER BY SUBSTRING(NAME,LEN(NAME)-2,3), ID ASC;
答案 17 :(得分:0)
如果是Oracle
SELECT NAME
FROM STUDENT
WHERE MARKS>75
ORDER BY SUBSTR(NAME,-3),ID;
答案 18 :(得分:0)
SELECT NAME FROM STUDENTS WHERE MARKS > 75 ORDER BY RIGHT(NAME, 3), ID ASC;
用于MYSQL。
答案 19 :(得分:0)
此查询也适用于我
select Name from STUDENTS where Marks > 75 ORDER BY SUBSTRING(NAME, LENGTH(NAME)-2, 3), ID;
答案 20 :(得分:0)
以下查询适用于MS SQL SERVER
SELECT name FROM Students
WHERE marks > 75
ORDER BY SUBSTRING(name,len(name)-2,LEN(name)), id;
答案 21 :(得分:0)
MS SQL SERVER
SELECT Name from STUDENTS
WHERE MARKS>75
ORDER BY RIGHT(NAME ,3),RIGHT(NAME ,2),RIGHT(NAME ,1), ID
和我一起工作得很好!有人请告诉其他一些快捷方式,因为这里只有3个,但可能会更改为更高的数字。
答案 22 :(得分:0)
HackerRank SQL问题。
select distinct Name from STUDENTS where Marks > 75
order by substr(Name,-3,length(Name)),ID
答案 23 :(得分:-1)
试试这个:
SELECT NAME FROM STUDENTS WHERE MARKS > 75 ORDER BY SUBSTRING (NAME, LEN(NAME)-2 ,LEN(NAME)), ID
答案 24 :(得分:-1)
从学生中选择姓名 > 75 按 right(name,3), id 排序;