每日一刷与题解:Java基础知识+sql

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一刷与题解:Java基础知识+sql相关的知识,希望对你有一定的参考价值。

Java基础知识题

在这里插入图片描述
答案:C
题解:重载是同名不同参,其余的都没有要求

在这里插入图片描述
答案:B
题解:&&是短路与,所以x>50是false,就直接返回false了,后面的语句都不会进行了。

在这里插入图片描述
答案:B
题解:1、如果是本类使用,可以直接就用静态变量名。
2、如果是其他类使用,可以使用类名来调用,也可以创建一个实例对象来调用。
3、如果静态变量所在的类是静态类,那么不管在本类里或者在其他外部类,都可以直接使用静态变量名。

在这里插入图片描述
答案:B
题解:采用命令行“ java Test one two three ”调用,其中Test为调用的方法,而one two three则为Test方法里面main函数的参数;System.out.println(args[0]);表示输出第一个元素,故为one;

在这里插入图片描述
答案:D
题解:PC寄存器就是程序计数器
在这里插入图片描述
在这里插入图片描述
答案:D
题解:
在这里插入图片描述

在这里插入图片描述
答案:A
题解:
在这里插入图片描述
在这里插入图片描述
答案:C
题解:17的二进制为10001,5的二进制位101,^是异或操作,所以答案位20

在这里插入图片描述
答案:D
题解:不管怎样线程对a的操作就是+1后-2
1.线程1执行完再线程2执行,1-2+1-2=-2
2.线程1和2同时+1,再-2不同时,1-2-2=-3
3.线程1和2不同时+1,同时-2,1+1-2=0
4.线程1和2既同时+1又同时-2,1-2=-1
没有结果为1的情况

在这里插入图片描述
答案:BCF
题解:B、浮点数默认double,所以float类型要在数值后面加f
C、无语,居然是没加分号
D、这个是对的,会自动装箱变成object的子类
F、没看到前面是Double包装器类型,包装器类型要在后面加上d,才能自动装箱

SQL语句

SQL21:查找在职员工自入职以来的薪水涨幅情况

//我们可以先查找入职时的工资,然后再查找现在的工资,最后用现在的工资减去入职时的工资就是工资涨幅
//入职时的工资
select e.emp_no,s.salary
from employees e 
left join salaries s 
on e.emp_no = s.emp_no
and e.hire_date = s.from_date

//现在的工资
select e.emp_no,s.salary
from employees e 
left join salaries  s 
on e.emp_no = s.emp_no
where s.to_date = '9999-01-01'

//合并
select b.emp_no,(b.salary - a.salary) growth
from (
    select e.emp_no,s.salary
    from employees e 
    left join salaries s 
    on e.emp_no = s.emp_no
    and e.hire_date = s.from_date
) a -- 入职工资表
join (
    select e.emp_no,s.salary
    from employees e 
    left join salaries  s 
    on e.emp_no = s.emp_no
    where s.to_date = '9999-01-01'
) b -- 现在工资表
on a.emp_no = b.emp_no
order by growth;

SQL22:统计各个部门的工资记录数

//三表连接
select d.dept_no, d.dept_name, count(s.salary) sum
from departments d
join dept_emp e
on d.dept_no = e.dept_no
join salaries s
on s.emp_no = e.emp_no
group by d.dept_no
having count(s.salary)
order by d.dept_no;

SQL23:所有员工的薪水按照salary进行按照1-N的排名

//我们先进行非等值自连接,然后对员工号分组排序
select  a.emp_no, a.salary, count(distinct b.salary)
from salaries a,salaries b
where a.to_date = '9999-01-01' 
and b.to_date = '9999-01-01'
and a.salary <= b.salary
group by a.emp_no
order by a.salary desc, a.emp_no;

SQL24:获取所有非manager员工薪水情况

//先子查询,找到所有不是经理的员工,然后再三表连接
select d.dept_no, e.emp_no, s.salary
from (
    select emp_no
    from employees
    where emp_no not in (
        select emp_no
        from dept_manager
    )
) e
join dept_emp d
on e.emp_no = d.emp_no
join salaries s
on e.emp_no = s.emp_no;

SQL25:获取员工其当前的薪水比其manager当前薪水还高的相关信息

select e.emp_no,m.emp_no manager_no,s1.salary emp_salary,s2.salary manager_salary
from dept_emp e,dept_manager m,salaries s1,salaries s2
where e.dept_no = m.dept_no	//查找员工和经理是否在同一个部门
and e.emp_no = s1.emp_no	//员工的工资
and m.emp_no = s2.emp_no	//经理的工资
and s1.salary > s2.salary	//员工的工资大于经理的工资
and s2.to_date = '9999-01-01'
and s1.to_date = '9999-01-01';

以上是关于每日一刷与题解:Java基础知识+sql的主要内容,如果未能解决你的问题,请参考以下文章

每日一刷与题解:Java基础知识+sql

每日一刷与题解:Java基础知识+sql

每日一刷与题解:Java基础知识+sql

每日一刷与题解:Java基础知识+sql

每日一刷与题解:Java基础知识+sql

每日一刷与题解:Java基础知识+sql