!51. 查找字符串’10,A,B’ 中逗号’,'出现的次数cnt。
解题比较有技巧,原来的字符串长度减去把要计数的字符去掉后的字符串的长度就是要计数的字符个数
select (length('10,A,B')-length(replace('10,A,B',',','')))as cnt
--字符串长度length()
--SQL server 里的函数是len()
52. 获取Employees中的first_name,查询按照first_name最后两个字母,按照升序进行排列
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
注意:从字符串中取字符的函数
Oracle,SQLite:substr(string,start,length)
MySQL:substr()或substring()
SQL Server:substring()
--select first_name from employees
--order by right(first_name,2) asc-- MySQL,server可以这里不可以
--考察substr(,,),MySQL有这个函数
--SQL server 叫 substring(,,)函数
select first_name from employees order by substr(first_name,-2)
!SQL server substring 用法:
SQL Server SUBSTRING()函数简介
----截取字符串的后两位,(字符串,开始位置,截取长度)
select substring('harry',len('harry')-1,2)
!53. 按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employees
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
注意:考察group_concat()函数
select dept_no,group_concat(emp_no) as employees from dept_emp
group by dept_no
--group_concat函数
54. 查找排除当前最大、最小salary之后的员工的平均工资avg_salary。
CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
注意条件当前