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中做
^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

解决方案 »

  1.   

    不准看书, 不准在SQLPlus或者在 Transcast-SQL中做----
    汗,sql语法,函数格式什么的,用得着记那么清楚?写sql关键在于逻辑的正确性,和执行的性能,死扣语法有意思么要是规定程序员写程序不准调试,那你说结果怎么样?呵呵
      

  2.   

    回复NinGoo(蚂蚁啃大象)难道你在人才市场里面试的时候, 面试官给你题目做, 你有Face把书拿出来翻呀! 后面N多郫视你哦
      

  3.   

    1. 第一题很简单就不写了.
    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
      

  4.   

    其中where条件 还可以这么写 WHERE CONVERT(datetime,order_date) >= '2006-10-01' 
    and  CONVERT(datetime,order_date) <= '2006-10-31'
      

  5.   

    感觉你的功力还不到家。无论 substring(order_date,1,7) = '2006/10' 还是 CONVERT(datetime,order_date) >= '2006-10-01' and  CONVERT(datetime,order_date) <= '2006-10-31' 你都为每条记录耗费了一个substring 或者 convert 操作,大批量数据时此语句效率很低。
    这样写肯定比你的快:
     order_date>='2006/10/01 and order_date <='2006/10/31'
    献丑。
      

  6.   

    order_date>='2006/10/01 and order_date <='2006/10/31'
    不如用between and吧??
      

  7.   

    你真正开发的时候也成天翻书去写呀?
    别人要的是熟练的人.这样写起来快.否则这样简单的问题都要搞半天.怎么叫你做项目呀?
    自己好好检讨一下自己.不要首先看到别人的不是.
    磨刀不误砍柴工. 好好熟悉一下再去面试吧.
    反正这样的人我是没兴趣用的.
    order_date>='2006/10/01 and order_date <='2006/10/31'
    不如用between and吧??
    这个经过查询分析器优化后执行性能是一样的.
      

  8.   

    please over the topic of this!thanks!