SQL Server 每日一题
喵叔哟
Dedicated to promoting and advancing .NET in China for a lifetime.
展开
-
SQL Server 每日一题--每月销售额
零、故事某销售公司每月都会统计每个销售人员当月的销售额,作为提成的标准。年底公司经理想看到本年每月每名销售的销售额,然后将这些数据作为今年发年终奖的参考。一、问题请编写出 SQL 语句,查询每名销售每个月的销售额。查出的格式如下:姓名一月二月三月四月五月六月七月八月九月十月十一月十二月张三121314343525null12010...原创 2019-12-01 22:22:36 · 3272 阅读 · 1 评论 -
SQL Server 每日一题--解析产品
这道题就是一道送分题,考察的是 join 的用法,我们秩序利用 join 关联两个表即可,sql 如下:select product_name,year ,price from Product as pjoin Sales as s on p.product_id=s.product_id...原创 2019-11-14 22:17:07 · 932 阅读 · 0 评论 -
SQL Server 每日一题--产品
某公司生产U盘多年,一天老板来到财务部要求财务人员统计出产品的上市年份和单价。于是财务部主管找到了程序员S,让他帮忙统计一下。财务主管的需求已知已知有销售表 Sales 和产品表 Product ,表结构如下:Sales 表字段属性sale_id销售编号product_id产品编号year销售年份price单价Product ...原创 2019-11-10 01:36:13 · 991 阅读 · 0 评论 -
SQL Server 每日一题--解析老N的收入
这个提的解题思路和老二那道题的思路一样,利用 row_number 解决零、解析首先去除数据中相同的工资,然后将工资从大到小排序,接着利用 row_number 函数给每行数据加上行号,最后过滤出行号为N的工资,因为需要根据指定的排名查询,因此这里用到了函数。代码如下:CREATE FUNCTION getNthHighestSalary(@N INT) RETURNS INT ASBEG...原创 2019-11-10 01:02:53 · 892 阅读 · 0 评论 -
SQL Server 每日一题--老N的收入
刚解决完 Boss 提出的找出收入排名第二的问题,这时二号 Boss 提出了新需求,他想查询出指定排名的员工的工资,如果存在相同收入的员工只显示其中一个。零、问题来了已知有薪水 Salar 表 ,结构如下:字段字段类型说明Idint薪水编号Moneyint薪水问题查询出指定排名的员工的工资,如果存在相同收入的员工只显示其中一个。...原创 2019-11-07 22:54:20 · 906 阅读 · 0 评论 -
SQL Server 每日一题--解析天气预报员
这道题主要考察 DATEDIFF 的用法, DATEDIFF 主要用于计算两个日期的差。通过题目可知我们可以通过将 weather 与自身相结合,并使用 DATEDIFF() 函数。那么这道题有两种主要的解决方法:利用 from table_name1 , table_name2利用 inner join下面我们来看一下这两种方法的使用。零、from table_name1 , tab...原创 2019-11-07 22:34:36 · 987 阅读 · 0 评论 -
SQL Server 每日一题--天气预报员
某市气象局网站需要增加一个功能,需要显示出历年来当天温度高于前一天温度的日期。零、问题来了已知已知所有气象数据都存储在 Weather 表中,表结构如下:字段说明Id气象编号Date记录日期Temperature温度问题查询出当天温度高于前一天温度的日期。...原创 2019-11-06 17:36:20 · 977 阅读 · 0 评论 -
SQL Server 每日一题--解析只逛不买
这个题目经常用到的解决方法有两种,第一种方法是大多数人首先想到的利用 not in 或者 not exists,第二种方法是利用 left join 。下面我们来分别看看这两种方法。零、解析not in / not existsnot in首先我们查询订单表中 CustomersId ,并去重。这些 Id 都是有购买记录的会员的Id。select distinct Custome...原创 2019-11-06 17:16:18 · 908 阅读 · 0 评论 -
SQL Server 每日一题--只逛不买
A商城最近要进行双十一促销活动,首先需要统计出从来没有买过任何一件东西的注册会员,然后在双十一当天向他们推送大量促销信息,促成他们购买第一件商品。零、问题来了已知我们有会员表 Customers 和订单表 Orders 。表结构如下:Customers|字段|说明||----|----||Id|会员编号||Name|会员姓名|Orders|字段|说明||----|---...原创 2019-11-03 18:13:10 · 954 阅读 · 0 评论 -
SQL Server 每日一题--重复报名的人解析
零、解析这个题目主要考察的是 group by 和 having 语句的使用,找重复数据,首先使用 group by 进行汇总,然后使用 having 进行过滤,使用Count(字段) 进行统计汇总数据,大于1的则为重复。select IdNum,Name from SignUp group by IdNum having count(IdNum)>1...原创 2019-11-02 23:17:38 · 884 阅读 · 0 评论 -
SQL Server 每日一题--重复报名的人
社区举办抽奖活动,规定每人只能报一次名为了,多次报名参与名额作废,报名结束后需要筛选出重复报名的人。零、问题来了已知有报名表 SignUp ,报名时需要输入身份证号记录报名的人。表结构字段说明Id报名编号IdNum身份证Name报名人姓名DateTime报名时间问题筛选出重复报名的人的身份证号和姓名。...原创 2019-11-02 21:48:58 · 871 阅读 · 0 评论 -
SQL Server 每日一题--老二解析
这道题的解题思路有很多种,我在这里就讲讲常用的两种,一个是利用 row_number ,一个是里用排除法。零、利用 row_number思路是这样的,首先去除数据中相同的工资,然后将工资从大到小排序,接着利用 row_number 函数给每行数据加上行号,最后过滤出行号为2的工资。代码如下:select NULLIF( (SELECT Money FROM ( ...原创 2019-11-01 00:37:51 · 824 阅读 · 0 评论 -
SQL Server 每日一题--老二
很多情况下我们只知道老大(冠军)是谁,但是从来不知道老二(亚军)是谁,那么我们今天就通过 SQL 语句找出老二(亚军)这个人。零、Boss 来了今天发工资,老板说想知道这个月工资排名第二的员工的工资是多少,于是会计找到了程序员来设计这个SQL语句。已知薪水 Salar 表 ,结构如下:|字段|字段类型|说明||----|----|----||Id|int|薪水编号||Mone...原创 2019-10-30 23:52:34 · 929 阅读 · 0 评论 -
开胃菜解析
《开胃菜》这篇文章中所提出的问题其实很简单,我们只需要从表连接入手即可,使用外链的方式就可以解决这个问题。零、解析我们从 学生 Student 表和父母 Parent 表中可以看出, StudentId 是 Parent 表的外键,并且根据问题可知我们需要查出来 StudentName 、 FatherName 和 MaterName ,同时这里我们假定 Student 有可能没有对应的 Pa...原创 2019-10-29 09:13:12 · 878 阅读 · 0 评论 -
开胃菜12
从今天开始,我会每天早上放出一个 SQL 问题,之后会在第二天放出对这个问题进行讲解。今天是第一篇,算是个开胃菜吧,问题比较简单。零、上菜现在有两张表,一张学生 Student 表,一张父母 Parent 表,这两个表的结构如下:Student字段类型说明StudentIdint学生编号Namevarchar(20)姓名Parent...原创 2019-10-28 14:38:45 · 876 阅读 · 0 评论