sql
abant2
世界上最菜的arcem
展开
-
leetcode 182 使用having令group by少一层
但其实这一层是可以不必要的,使用having条件即可,这是专属于group by的操作,可以方便少一层select。看到此题,一瞬间就完事了啊,直接一个group by再嵌套一层完事。原创 2022-08-12 13:51:16 · 112 阅读 · 0 评论 -
leetcode 1407 ifnull,多条件排序
此题还是比较有意思的,如果有名字不在行驶记录中,那么他的成绩是0,也要计入表里,这里可以通过left/right join外加ifnull来实现。注意:ifnull对非null值是不做处理的,如果想对非null值也处理,可以用if函数。之后就是order by,优先级高的放前面,像group by一样。...原创 2022-08-11 15:27:44 · 133 阅读 · 0 评论 -
leetcode 511 日期操作
此题希望找出每个id的最小日期,如果是最小值很好操作,用min就可以了。那么最小日期其实用min也ok哈哈哈。datediff函数可以让我们得到两个日期差的日子,但min,max操作对date对象依然是成立的,很不错。...原创 2022-08-10 18:00:42 · 122 阅读 · 0 评论 -
leetcode 1141 少一层嵌套select
想法很简单,我们先group by,第二层用where选出count > 0并且日期符合要求的组,但其实是没有这个必要的,因为count = 0的行在group by时根本不会被提取出来。所以可以用下面的单层嵌套解决。重命名可以不用as,直接命就行,nice。选出30天,每天的活跃用户数目。解法二:单层select。...原创 2022-08-09 14:31:05 · 92 阅读 · 0 评论 -
leetcode 197 cross join和自交
此题需要两两比较找到每两个日期差为一的对,因此我们要使用cross join来操作,并且需要自交,这里要用到别名方法,特别简单,select时写一下就行。此外,datediff这个函数可以帮忙判断日期差,很舒服。......原创 2022-08-09 13:36:22 · 59 阅读 · 0 评论 -
leetcode 176 子查询,ifnull,limit,offset
当提取的是一个数字时,我们就可以将其作为一个属性常量。在此题中我们也可以利用这个特性,首先抽取出这个常量,如果是null也可以提取出,然后将他作为常量拿出即可。首先讲讲ifnull函数,这个函数和if不太一样,if可以用于属性值不同case的多路选择,但ifnull的输入一般是一个值(?首先介绍一下子查询的概念,最常见的就是list提取,我们也经常用的。subquery提取的可以是一个列表,一张表,或者是一个数字。和上面的代码对比,我们只是加了一个函数,并且完全是多余的。解法二:ifnull。...原创 2022-08-08 17:39:30 · 1298 阅读 · 0 评论 -
leetcode 608 选取list时记得去null
这个题目还是比较典型的,在提取list时记得要把null排除掉,不然用in操作时会出现bug。原创 2022-08-01 20:33:00 · 74 阅读 · 0 评论 -
leetcode 1795 sql表的拆分,行转列
然后离谱的事就发生了,tm的就不对啊。然后我就研究了一会,发现原来sql是不能!=null的,一定要isnotnull才行。此题一眼看去完全不会,经题解指点,发现可以讲常数值直接定位列的值,结合union可以非常巧妙额解决,于是我就画了个葫芦。...原创 2022-08-01 20:21:07 · 161 阅读 · 0 评论 -
leetcode1965 表的属性融合 选取list
事实上我们无法合并属性,但可以通过表的union进行合并。并且可以通过select获取list进行in的操作,还是很妙的。正常我们可以通过fulljoin把两个表连接起来,但是需要把两个表的雇员id属性给合并,这一步不太会做。...原创 2022-08-01 20:06:39 · 91 阅读 · 0 评论 -
leetcode 1527 sql 正则、通配符匹配
正则的规则更为复杂,有时可以处理更为复杂的情况。其中,匹配空白字符可以用\s,因为\s是空格,^代表字符串开始位置。此题需要再conditions字符串中找到满足条件的子串。用算法做的话都很麻烦,但是正则和通配符就非常方便。上述方法是错误的,因为可能会匹配到ADIAB1这类字符串,所以可以把第一个单独考虑,即。通配符的方法很简单,使用like,用%代替其余字符即可。......原创 2022-07-31 13:09:45 · 427 阅读 · 0 评论 -
leetcode 1484 group by collect_list替代
我们可以使用group_concat函数将商品列表变成字符串,还是挺简单的。但这样无法提出商品列表,只能提取一个商品。原创 2022-07-26 15:23:07 · 154 阅读 · 0 评论 -
leetcode 1667 sql中字符串处理函数
此题主要考差了sql的一些字符串函数,比如upper,lower,left(取左边的子串,输入位置),substring(取右边的子串,输入位置),concat(连接字符串)等。题目要求使用select查询,也不用改了(一般在hive上也不改)。...原创 2022-07-26 15:11:50 · 336 阅读 · 0 评论 -
leetcode 196 选择性删除
这样,但是此题列出了两个表,要删除第一个表中不是最小的部分,可以学习一下这种写法。第二个表就是纯工具表,没什么用的那种。要删除email相同里id不是最小的部分,这个还是比较复杂的。这题真的无敌了,删除一下还这么费劲。可以看到并没有直接删除。...原创 2022-07-26 14:52:06 · 568 阅读 · 0 评论 -
leetcode 627 使用if更改表
但正常这样改的话,无法一次进行全部改进,可以使用下面的更改方法。此题中,我们正常应该用update来改。直接将if语句进行赋值更改,非常的妙。原创 2022-07-26 14:35:39 · 73 阅读 · 0 评论 -
leetcode 1873 sql中的if
此题中需要在select里写if语句进行判断,我们可以用sql中的if来实现,if函数中有三个参数条件,值1,值2。另,orderby默认从小到大排序。如果条件满足就取值一,不满足就取值2。原创 2022-07-26 14:25:00 · 240 阅读 · 0 评论 -
leetcode 183 表的合并
我们可以将第二个表中的一列取出来,然后找不在里面的即可,这样更简单。我们需要将两个表关联才行,所以可以想到leftjoin。解法一leftjoin。解法二无合并直接去掉。原创 2022-07-24 23:38:02 · 90 阅读 · 0 评论 -
leetcode 584 null值的比较
sql的null值不能直接和值比较,需要用isnull或者isnotnull来判断。但这种方法会把所有null值过滤掉。原创 2022-07-24 23:14:14 · 97 阅读 · 0 评论 -
leetcode 595 union加速
这样写是不对的,会把有的列弄没,两个表得一致才行。这样就对了,但经过实测,也没快多少。解法二利用union加速。上述算法较为直接,但速度慢。原创 2022-07-24 22:57:43 · 257 阅读 · 0 评论