昨晚参加某大型网上商城的校招笔试题,大家来讨论讨论

昨晚参加的某商城笔试题,先来看看SQL的题

第一题:

假设某商品表为 tabletest ,使用一条SQL语句查询出所有字段为 shop_id 取值重复的记录

 

第二题:

假设某商品表 tabletest中 price字段表示价格, promote_price字段表示促销时期价格,请用一条SQL 语句实现,当前月份为 6月时, 使用promote_price字段代替 price字段

 

大家谈谈自己的答案?

 

我的答案:

 create table jd_test
 (
	shop_id int not null,
	price int not null,
	promote_price int not null
 )

 insert into jd_test
 values(1,100,90),
 (2,110,100),
 (2,90,80),
 (3,120,90),
 (3,150,90),
 (4,40,39)

 --使用子查询 查询出所有 shop_id数量>1的(即表示有重复),然后再选择出该重复shop_id的所有信息
 select * 
 from jd_test
 where shop_id in ( select shop_id
 from jd_test
 group by  shop_id
 having count(shop_id) > 1)

--使用 update 语句 和 case 语句更新 price 价格
UPDATE jd_test SET price =
CASE	
	WHEN DATEPART(MONTH,GETDATE()) = 6 THEN promote_price
	ELSE price
END

 

顺便说说 DATEPART() 函数的使用:   分别取出年月日

 SELECT DATEPART(YEAR,GETDATE()) AS yaar,
  DATEPART(MONTH,GETDATE()) as month, 
  DATEPART(DAY,GETDATE()) as day

 

结果:

 

还有其他题,待会儿再放出来讨论!

转载于:https://www.cnblogs.com/TangPro/p/3314885.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值