算是结束了这个阶段了,之后的怎么学习mysql的方向还没确定,但是不能断掉,而且路是边走边想出来的。我无语了写完了我点进去看详情都不让,还得重新开启计划,那我之前的题解不都没有了!!
1.第二高的薪水相关的表和题目如下
我尝试的办法都不行,但是都不知道为什么,于是还是看题解了,题解有下面两种方式。
select (select distinct salary from employee order by salary desc limit 1 offset 1)as SecondHighestSalary;
select (select distinct salary from employee order by salary desc limit 1,1)as SecondHighestSalary ;
这才发现原来这题也不难但是居然可以select 表名,而且结合之前的题distinct感觉有些限制,但是目前不清楚。
limit 两个参数的话,第一个参数表示从第几条开始输出,计数是从0开始的,第二个参数表示需要输出多少条记录;
limit 一个参数的话,表示输出几条参数,也就是说没有0哦,因为是0的话没意义(这里妄下论断了啊,具体我摆烂了)。
limit n offset n 表示输出n条记录,从第一条偏离n条开始输出。
2.按日期分组销售产品相关的表和题目如下
这个也不难,就是最后一个输出按照词典序排列不会,格式如下。
我先利用concat()尝试的结果和代码如下,没成功,于是百度。
发现可以利用group_concat(),他的用法如下,这里面的各种用法这个题目都运用上了。
而且我发现我题目还理解错了,不需要利用两个字段进行分组,修改后的代码如下
select sell_date,count(distinct product) as num_sold,group_concat(product order by product separator ',')as product from activities group by sell_date order by sell_date;
把count(*)换成了count(distinct product),只group by sell_date,但是还是错了,结果图如下。
我还是没想到,因为之前有过错误,order by 后面不能加distinct,然后我看题解我发现只要将通过group_concat()拼接的product加上distinct就行,我被自己蠢到了,没事我原谅我自己了。提交的时候发现别名products写成了product,下面是改了之后的正确的题解。
select sell_date,count(distinct product) as num_sold,group_concat(distinct product order by product separator ',')as products from activities group by sell_date order by sell_date;
3.列出指定时间段内所有的下单产品相关的表和题目如下
从题目看来很简单,就是有点不仔细,有些关键字没写仔细,正确的题解如下。
select product_name,sum(unit) as unit from products p join orders o on p.product_id=o.product_id where order_date>='2020-02-01' and order_date <'2020-03-01' group by p.product_id having unit>=100;
4.查找拥有有效邮箱的用户相关的表和题目如下
很明显是用正则表达式,然后变百度边思考怎么写,以下是我结合白的的四种错误答案,但是我目前还不知道为什么,我打算之后出一个正则系列的笔记,今天有些事打乱了我原来的计划不方便开电脑,然后删照片的时候看到以前的截图没忍住去看了小说,嘿嘿,就没能很快的写。
(1)
(2)
(3)
(4)
正确的题解如下,反复测试还不知道为什么,说明正则表达式很不熟练,需要多多练习。
select * from users where mail regexp '^[a-z,A-Z][a-zA-Z0-9\_\.\-]*@leetcode[.]com$';
5.总结
目前mysql告了小小的一个段落,很多原理都不知道,但是我尝试了,尝试一件以前一直没有力气做的事情,其实就已经进步了,做了就是在进步,即使现在是止步不前但那有可能是因为看的这个维度止步不前,而其他的维度你一定进步了,我可以肯定。体验过本身就是财富,希望我写的博客能帮到你们,其他的我还要努力,加油加油!!