分享两道今天的笔试题,关于MySQL和php字符串处理的...
时间:2009-11-19
来源:互联网
题目是这样的,有如下两张表,求aaa表与bbb表中相同type的num值之差。
表aaa:[code] +----+------+------+
| id | type | num |
+----+------+------+
| 1 | A | 1024 |
| 2 | B | 2048 |
+----+------+------+
[/code]表bbb:[code]+----+------+-----+
| id | type | num |
+----+------+-----+
| 1 | A | 32 |
| 2 | A | 64 |
| 3 | A | 128 |
| 4 | B | 256 |
| 5 | B | 512 |
+----+------+-----+[/code]写出sql语句,求差部分只能用一句代码...汗死,笔试没电脑只能靠蒙了,当时没写对...
建立数据库,写入并查看数据部分:[code] mysql> create database sum;
Query OK, 1 row affected (0.01 sec)
mysql> use sum;
Database changed
mysql> create table aaa(
-> id int(11) not null primary key,
-> type char(1) not null,
-> num int(11) not null
-> );
Query OK, 0 rows affected (0.43 sec)
mysql> create table bbb(
-> id int(11) not null primary key,
-> type char(1) not null,
-> num int(11) not null
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> insert aaa values
-> ("1","A","1024"),
-> ("2","B","2048");
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> insert bbb values
-> ("1","A","32"),
-> ("2","A","64"),
-> ("3","A","128"),
-> ("4","B","256"),
-> ("5","B","512");
Query OK, 5 rows affected (0.01 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from aaa;
+----+------+------+
| id | type | num |
+----+------+------+
| 1 | A | 1024 |
| 2 | B | 2048 |
+----+------+------+
2 rows in set (0.00 sec)
mysql> select * from bbb;
+----+------+-----+
| id | type | num |
+----+------+-----+
| 1 | A | 32 |
| 2 | A | 64 |
| 3 | A | 128 |
| 4 | B | 256 |
| 5 | B | 512 |
+----+------+-----+
5 rows in set (0.00 sec)
[/code]要想求差,得先把每张表先求和啊:[code] mysql> select an from
-> (select aaa.type,sum(aaa.num) as an from aaa group by aaa.type)
-> as a;
+------+
| an |
+------+
| 1024 |
| 2048 |
+------+
2 rows in set (0.00 sec)
mysql> select bn from
-> (select bbb.type,sum(bbb.num) as bn from bbb group by bbb.type)
-> as b;
+------+
| bn |
+------+
| 224 |
| 768 |
+------+
2 rows in set (0.00 sec)
[/code]求和完事该求差了:[code] mysql> select (a.an-b.bn) from
-> (select aaa.type,sum(aaa.num) as an from aaa group by aaa.type) as a,
-> (select bbb.type,sum(bbb.num) as bn from bbb group by bbb.type) as b
-> where a.type=b.type;
+-------------+
| (a.an-b.bn) |
+-------------+
| 800 |
| 1280 |
+-------------+
2 rows in set (0.00 sec)
[/code]回来后的感想,一共5道题,时间30分钟,对于不熟练的新手来说,一下子就卡死了,我回来后在电脑上写了半个小时才把这道题写完,有些公司笔试对新手应聘者是不是太苛刻了...
新手成长也是需要项目锻炼的呀,发发牢骚,自己技艺不精也没办法,怨不得别人.....
作者: sanalex 发布时间: 2009-11-19
无话可说了,笔试给台电脑用也行啊...
作者: sanalex 发布时间: 2009-11-19
给定字符串,求其中每个字符出现的次数,不分大小写:
原题变量还是写错的,变量不变量数组不数组的,闷...
(下面是我改好了的,字符串已经记不清了,随便写点啥,呵呵)[code]$str = "My name is hahahaha, who are you?";[/code]过程是这样:[code] <?php
$str = "My name is hahahaha, who are you?";
$str = strtolower($str);//先都转化成小写
$str = str_split($str);//把字符串拆开成数组
$str = array_count_values($str);//计算数组中每个元素出现的次数,这个函数好像不常用,呵呵,考官还问我有这个函数没,汗...
//print_r ($str);//输出一下就看到了,或者下面直接显示
foreach ($str as $key => $value) {
echo "其中".$key."出现的次数为:".$value."<br />";
}
?>
[/code]结果:[code] Array
(
[m] => 2
[y] => 2
[ ] => 6
[n] => 1
[a] => 6
[e] => 2
=> 1
=> 1
[h] => 5
[,] => 1
[w] => 1
[o] => 2
[r] => 1
=> 1
[?] => 1
)
[/code]显示的话,这样:[code] 其中m出现的次数为:2
其中y出现的次数为:2
其中 出现的次数为:6
其中n出现的次数为:1
其中a出现的次数为:6
其中e出现的次数为:2
其中i出现的次数为:1
其中s出现的次数为:1
其中h出现的次数为:5
其中,出现的次数为:1
其中w出现的次数为:1
其中o出现的次数为:2
其中r出现的次数为:1
其中u出现的次数为:1
其中?出现的次数为:1
[/code]
作者: sanalex 发布时间: 2009-11-19
原题变量还是写错的,变量不变量数组不数组的,闷 ...
sanalex 发表于 2009-11-19 22:46
$str = strtolower($str);
$tmpArr = explode(' ',$str);
$numArr = array_count_values($tmpArr);
print_r($numArr);
作者: liaofuqian 发布时间: 2009-11-20
作者: hedgelog 发布时间: 2009-11-20
作者: xinruzhishui01 发布时间: 2009-11-20
从你注册时间看,我也仅仅比你早半年认识PHP啊
作者: lxylxy888666 发布时间: 2009-11-20
啊,是我写错,是字符出现次数,嘿嘿~
作者: sanalex 发布时间: 2009-11-20
xinruzhishui01 发表于 2009-11-20 14:25

作者: sanalex 发布时间: 2009-11-20

作者: 邹梨明 发布时间: 2009-11-22
select a.id as id,(a.name-b.name) as cou
from (select sum(name) as name,id as id from testa group by id ) a
right join (select sum(name) as name, id as id from testb group by id ) b
on a.id=b.id ;
作者: xinruzhishui01 发布时间: 2009-11-23
a.num - sum( b.num )
)
FROM aaa AS a
LEFT JOIN bbb AS b ON a.type = b.type
WHERE a.type = b.type
GROUP BY a.type
作者: wida 发布时间: 2009-11-23
作者: 古嗣小井 发布时间: 2009-11-23
SELECT * , (a.num - b.num
) AS totalnum
FROM aa AS a
LEFT JOIN bb AS b ON a.type = b.type
LIMIT 0 , 30
作者: quzhongxiong 发布时间: 2009-11-24
作者: sanalex 发布时间: 2009-11-24
<?php $data = "Two Ts and one F."; foreach (count_chars($data, 1) as $i => $val) { echo "There were $val instance(s) of \"" , chr($i) , "\" in the string.\n"; } ?>
作者: toallick 发布时间: 2009-11-26
SELECT a.num-SUM(b.num) FROM aaa a LEFT JOIN bbb b ON a.type=b.type GROUP BY b.type
作者: ihavenomoney 发布时间: 2009-11-27
作者: 屋顶 发布时间: 2009-11-27
第一题里面,两张表不只是仅有那几条数据,aaa里面可以有很多type为A的记录,同样bbb里面也有很多type为B的记录

第二题看到一个很好玩的解法,收了拿回去研究一下
作者: sanalex 发布时间: 2009-11-29
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28