用一条SQL语句查询出所有员工姓名的字母前三位

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用一条SQL语句查询出所有员工姓名的字母前三位相关的知识,希望对你有一定的参考价值。

用一条SQL语句查询出所有员工姓名的字母前三位

sql中按姓名拼音排序

select
isnull(b.py,upper(left(a.username,1)))
as
py
,a.username
from
(
select
'a3'
as
username
union
select
username
from
usertable
--修改这里的姓名列~
)
a
left
outer
join
(
select
'a'
as
py,n'骜'
as
word,
n'啊'
as
sword
union
select
'b',n'簿',n'骜'
union
select
'c',n'错',n'簿'
union
select
'd',n'鵽',n'错'
union
select
'e',n'樲',n'鵽'
union
select
'f',n'鳆',n'樲'
union
select
'g',n'腂',n'鳆'
union
select
'h',n'夻',n'腂'
union
select
'j',n'攈',n'夻'
union
select
'k',n'穒',n'攈'
union
select
'l',n'鱳',n'穒'
union
select
'm',n'旀',n'鱳'
union
select
'n',n'桛',n'旀'
union
select
'o',n'沤',n'桛'
union
select
'p',n'曝',n'沤'
union
select
'q',n'囕',n'曝'
union
select
'r',n'鶸',n'囕'
union
select
's',n'蜶',n'鶸'
union
select
't',n'箨',n'蜶'
union
select
'w',n'鹜',n'箨'
union
select
'x',n'鑂',n'鹜'
union
select
'y',n'韵',n'鑂'
union
select
'z',n'咗',n'韵'
)
b
on
left(username,1)
between
b.sword
and
b.word
where
username<>'a3'
and
py='a'
--这里的and
py='a'是查询以a拼音开头的姓名,你可以
改成其他的,或者直接去掉就是查询所有的~
order
by
py
参考技术A 方法一. left从左往右数
select left(员工姓名,3),员工姓名 from 员工
方法二. 截取字符
select substring(员工姓名,0,4),员工姓名from 员工本回答被提问者采纳
参考技术B 楼上2位已经综合了 ORACLE 和 SQL SERVER的 答案了,呵呵。 参考技术C oracle环境

select substr(员工姓名,1,3) from 员工;
参考技术D 员工姓名长啥样儿啊,是字母么?

用一条SQL语句查出每门课都大于80分的学生的姓名

用一条sql语句查询出所有课程都大于80分的学生名单:

name cource score
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90

 

 

技术分享
 1 SET FOREIGN_KEY_CHECKS=0;
 2 
 3 -- ----------------------------
 4 -- Table structure for grade
 5 -- ----------------------------
 6 DROP TABLE IF EXISTS `grade`;
 7 CREATE TABLE `grade` (
 8   `name` varchar(255) NOT NULL,
 9   `class` varchar(255) NOT NULL,
10   `score` tinyint(4) NOT NULL
11 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
12 
13 -- ----------------------------
14 -- Records of grade
15 -- ----------------------------
16 INSERT INTO `grade` VALUES (张三, 语文, 81);
17 INSERT INTO `grade` VALUES (张三, 数学, 75);
18 INSERT INTO `grade` VALUES (李四, 语文, 76);
19 INSERT INTO `grade` VALUES (李四, 数学, 90);
20 INSERT INTO `grade` VALUES (王五, 语文, 81);
21 INSERT INTO `grade` VALUES (王五, 数学, 100);
22 INSERT INTO `grade` VALUES (王五, 英语, 90);
23 SET FOREIGN_KEY_CHECKS=1;
View Code

查询每门课都大于80分的同学的姓名:

技术分享
1 select distinct name from grade where name not in (select distinct name from grade where score<=80);
View Code

还有一种简单的写法:

技术分享
1 select name from grade group by name having min(score)>80;
View Code

 

查询平均分大于80的学生名单:

技术分享
1 select name from (
2    select count(*) t, sum(score) num, name from grade group by name       
3 ) as a where a.num>80*t;
View Code

也有一种简单的写法:

技术分享
1 select name, avg(score) as sc from grade group by name having avg(score)>80;
View Code

 

以上是关于用一条SQL语句查询出所有员工姓名的字母前三位的主要内容,如果未能解决你的问题,请参考以下文章

用一条sql语句查询表中字段的所有首字母大写

用一条SQL语句查出每门课都大于80分的学生的姓名

sql中查询出一条数据如何将数据存在一个变量中

sql查询三位数字怎么表达

oracle PL/SQL语句题目求教!

急!急!急!急!!!SQL里面的字符怎么用一条SQL语句将逗号后面的字符串得到?