今天又整理了一些SQL题目, 把“简单”那一章的题目过了一遍 其实也不简单。 在博客上也分享一下吧, 说不定有学SQL Server的人能看到。 — 如果在自己的测试DB跑的话,可以跑一下注释的脚本 /* CREATE TABLE competition_list( team_name NVARCHAR(8) ) INSERT INTO competition_list (team_name) VALUEs (N’谁与争锋队’) ,(N’必胜队’) ,(N’乘风破浪队’) ,(N’群英汇队’) ,(N’梦之队’) / –题目1:比赛名单整理 –问题:每个参赛队伍都会和其他参赛队伍开展一次组队比赛,要求输出两两参赛队伍的所有比赛情况组合 –(两者分别为队伍A和队伍B),并按队名依次升序排列 — select from competition_list –结果 –队伍 A 队伍 B –乘风破浪队 必胜队 –乘风破浪队 梦之队 –乘风破浪队 群英汇队 –乘风破浪队 谁与争锋队 –必胜队 梦之队 –必胜队 群英汇队 –必胜队 谁与争锋队 –梦之队 群英汇队 –梦之队 谁与争锋队 –群英汇队 谁与争锋队 SELECT a.team_name AS ‘队伍 A’ ,b.team_name AS ‘队伍 B’ FROM competition_list a INNER JOIN competition_list b ON a.team_name < b.team_name ORDER BY a.team_name, b.team_name; /* CREATE TABLE product_promotion( commodity_id VARCHAR(8), start_date DATE, end_date DATE ) INSERT INTO product_promotion (commodity_id,start_date,end_date) VALUES (‘a001′,’2021-01-01′,’2021-01-06’) ,(‘a002′,’2021-01-01′,’2021-01-10’) ,(‘a003′,’2021-01-02′,’2021-01-07’) ,(‘a004′,’2021-01-05′,’2021-01-07’) ,(‘b001′,’2021-01-05′,’2021-01-10’) ,(‘b002′,’2021-01-04′,’2021-01-06’) ,(‘c001′,’2021-01-06′,’2021-01-08’) ,(‘c002′,’2021-01-02′,’2021-01-04’) ,(‘c003′,’2021-01-08′,’2021-01-15’); / –题目2:参与优惠活动的商品 –commodity_id商品ID,start_date商品优惠活动开始日期,end_date商品优惠活动结束日期 –问题:查询在2021年1月7日至2021年1月9日期间参与优惠活动的商品 –select from product_promotion –结果 –commodity_id –a002 –a003 –a004 –b001 –c001 –c003 select commodity_id from product_promotion where (start_date=’2021-1-9′) or(end_date>=’2021-1-7′ and end_date=’2021-1-7′ and start_date=’2021-1-7′ and end_date<='2021-1-9') /* CREATE TABLE sold_succession( order_id INT, commodity_id VARCHAR(8) ) INSERT INTO sold_succession (order_id,commodity_id) VALUES (1,’c_001′) ,(2,’c_001′) ,(3,’c_002′) ,(4,’c_002′) ,(5,’c_002′) ,(6,’c_001′) ,(7,’c_003′) ,(8,’c_003′) ,(9,’c_003′) ,(10,’c_003′) ,(11,’c_001′); / –题目3:连续售出的商品 –问题找出连续下单大于或等于3次的商品ID –select from sold_succession –结果 –commodity_id –c_002 –c_003 SELECT commodity_id ,order_id ,LAG(order_id,2) OVER (PARTITION BY commodity_id ORDER BY order_id) AS temp FROM sold_succession order by order_id SELECT DISTINCT commodity_id FROM ( SELECT commodity_id ,order_id ,LAG(order_id,2) OVER (PARTITION […]