以前面试遇到的几道题
1.jQuery attr() 属性操作。
2.递归问题:
function res( $n ){
if( $n == 1 || $n == 2 ){
return 1;
}
return res(5);
}
解答如下:
res(5) = res(4) + res(3); // 值为5
res(3) = res(2) + res(1); // 值为2
res(4) = res(3) + res(2); // 值为3
res(5) = res(4) + res(3); // 值为5
3.访问修饰符,有权限的打 Y,无权限的打 N。
范围 | private | protected | public |
---|---|---|---|
本类 | Y | Y | Y |
子类 | N | Y | Y |
外部 | N | N | Y |
4.下列正确的是 (D)。
A.在浏览器禁用 cookie 的情况下,session 依然能正常使用。
B.当关闭浏览器的时候,session 销毁。
C.类的静态方法里面,可以调用类的非静态属性。
D.抽象类不能实例化。
5.用一个 sql 从 test 表中查询出 fill 不为2的,所有 id 对应的 total 的和。
Column 1 | Column 2 | Column 3 |
---|---|---|
Text | Text | Text |
Column 1 | Column 2 | Column 3 |
---|---|---|
Text | Text | Text |
`
下面是 test 表:
id | total | fill |
---|---|---|
1 | 100 | null |
1 | 200 | 2 |
1 | 300 | 1 |
2 | 111 | 1 |
2 | 222 | 2 |
3 | 666 | 1+1 |
期望得到的结果:
id | ResTotal |
---|---|
1 | 400 |
2 | 111 |
3 | 666 |
解答:首先查出 fill 不为 2 的id,再把 id 分组,再计算每组的 total 的和并同时取别名 ResTotal。
select id from test where fill <> 2; // 第一步
select id from test where fill <> 2 group by id; // 第二步
select id,sum( total ) as ResTotal from test where fill <> 2 group by id; // 第三步
6.请用一个 sql 统计出销售 2 个月的业绩。
这是 table1:
这是 table2:
期望得到结果:
dname | 一月份 | 二月份 |
---|---|---|
销售一组 | 100 | 200 |
销售二组 | 100 | 300 |
销售三组 | 100 | 400 |
解答:
第一种:
SELECT table2.*,
( SELECT yj from table1 WHERE table1.dep = table2.dep and mon = '一月份' ) as 1 月份,
( SELECT yj from table1 WHERE table1.dep = table2.dep and mon = '二月份' ) as 2 月份
FROM `table2`;
查询结果:
第二种:
SELECT dname,`一月份`,`二月份` FROM (
SELECT * FROM (
SELECT dep,yj '一月份' FROM table1 WHERE mon='一月份'
) t1 INNER JOIN (
SELECT dep,yj '二月份' FROM table1 WHERE mon='二月份'
) t2 USING(dep)
) t3 INNER JOIN table2 USING(dep);
查询结果:
以上仅仅是一家面试的题:2 道数据库查询可以学习下,欢迎大家给出更好 更多的方法,谢谢。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: