2006-8-2面试题目
=================
有两个表如下:TBL1:
cust_name, char类型, 客户名
order_date, char类型, 订单日及期格式(yyyy/MM/DD)
acount, int类型, 订单金额
TBL2:
cust_name, char类型, 客户名
rank, int类型, 客户等级
====================================================================
1. 查询2006年10份所有客户的订单总额2. 查询2006年10份订单总额大于0并且第一个字为"东"的客户名称3. 查询2006年10份有订单并且客户等级大于2的客户
请你拿起纸笔独自做, 然后再到电脑上运行. 我就一题都没做对:<不准看书, 不准在SQLPlus或者在 Transcast-SQL中做
^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
=================
有两个表如下:TBL1:
cust_name, char类型, 客户名
order_date, char类型, 订单日及期格式(yyyy/MM/DD)
acount, int类型, 订单金额
TBL2:
cust_name, char类型, 客户名
rank, int类型, 客户等级
====================================================================
1. 查询2006年10份所有客户的订单总额2. 查询2006年10份订单总额大于0并且第一个字为"东"的客户名称3. 查询2006年10份有订单并且客户等级大于2的客户
请你拿起纸笔独自做, 然后再到电脑上运行. 我就一题都没做对:<不准看书, 不准在SQLPlus或者在 Transcast-SQL中做
^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
汗,sql语法,函数格式什么的,用得着记那么清楚?写sql关键在于逻辑的正确性,和执行的性能,死扣语法有意思么要是规定程序员写程序不准调试,那你说结果怎么样?呵呵
2. SELECT cust_name
FROM (SELECT cust_name, SUM(account) AS sumaccount
FROM TBL1
WHERE substring(order_date,1,7) = '2006/10'
GROUP BY cust_name) AS A
WHERE (cust_name LIKE '东%') AND (sumaccount > 0)3. select T.cust_name
from Table_2 ,
(select cust_name,count(*)AS NUM
from Table_1
where substring(order_date,1,7) = '2006/10'
Group by cust_name
Having count(*) >=1) AS T
where rank = 2 and T.cust_name = Table_2.cust_name
and CONVERT(datetime,order_date) <= '2006-10-31'
这样写肯定比你的快:
order_date>='2006/10/01 and order_date <='2006/10/31'
献丑。
不如用between and吧??
别人要的是熟练的人.这样写起来快.否则这样简单的问题都要搞半天.怎么叫你做项目呀?
自己好好检讨一下自己.不要首先看到别人的不是.
磨刀不误砍柴工. 好好熟悉一下再去面试吧.
反正这样的人我是没兴趣用的.
order_date>='2006/10/01 and order_date <='2006/10/31'
不如用between and吧??
这个经过查询分析器优化后执行性能是一样的.