随笔分类 - SQL
1
摘要:虽然题目很简短,但是很难做啊!属于比较经典的题目,记录一下思路。 参考链接:https://leetcode.cn/problems/consecutive-numbers/solutions/21537/sql-server-jie-fa-by-neilsons row_number() over
阅读全文
摘要:按照sell_date列对数据进行分组,为了得到num_sold列,我们使用COUNT(DISTINCT product)来统计每个销售日期售出的唯一产品的数量。 使用GROUP_CONCAT()将多行中的多个值组成一个字符串: GROUP_CONCAT( DISTINCT expression1
阅读全文
摘要:主要任务就是只让第一个字符大写,其他都是小写。 SQL为我们提供了各种操作与转换数据的函数: SUBSTRING(column_name, start, length):这将从列的值中提取一个子字符串,从指定的起始位置开始,直到指定的长度。 UPPER(expression):这会将字符串表达式转换
阅读全文
摘要:参考链接:https://help.aliyun.com/zh/sls/user-guide/window-functions 简介 普通的聚合函数只能用来计算一行内的结果或者把所有行聚合成一行结果,而窗口函数支持为每一行生成一个结果。窗口函数包含分区、排序和框架这三个核心元素。 function
阅读全文
摘要:参考链接:https://leetcode.cn/problems/reformat-department-table/solutions/343480/guan-yu-group-byyu-sumde-pei-he-by-xxiao053/ 这是一道经典的行转列问题,先看一下大佬给的链接,讲述gr
阅读全文
摘要:参考链接:https://leetcode.cn/problems/second-highest-salary/solutions/66337/tu-jie-sqlmian-shi-ti-ru-he-cha-zhao-di-ngao-de-sh/ https://blog.csdn.net/WHYb
阅读全文
摘要:MySQL官方文档:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html 这里我们学习几个常用的日期函数: 1. 获取当前的日期和时间 SELECT CURRENT_TIMESTAMP(); -- 或 NOW() 2
阅读全文
摘要:参考:https://blog.csdn.net/wh_07/article/details/103292280 思路就是使用CASE语句,但是我对这个不太熟悉,一起来学习一下吧。 CASE 语句是在 SQL 中用于实现条件逻辑的一种强大工具。它允许在查询中根据不同的条件执行不同的操作。CASE 语
阅读全文
摘要:参考官方题解:https://leetcode.cn/problems/customer-placing-the-largest-number-of-orders/solutions/2366301/ding-dan-zui-duo-de-ke-hu-by-leetcode-so-bywe/ 首先我
阅读全文
摘要:https://leetcode.com/problems/find-customer-referee/ 选出推荐人id不为2的customer SELECT name FROM Customer WHERE referee_id != 2 OR referee_id IS NULL; 注意:由于
阅读全文
摘要:参考链接:https://developer.aliyun.com/article/870215 自连接是什么? 自连接其实就是两张结构和数据内容完全相同的表,在做数据处理时,我们通常会给他们分别重命名加以区分,然后进行关联。 示例表内容: 加入有如下一张表,结构和数据如下: 当我们进行自连接时,不
阅读全文
摘要:注意事项: 找出员工的直属部门,可能有两种情况: 员工加入多个部门,则选择对应的primary_flag是‘Y’的 员工只有一个部门,对应的primary_flag是‘N’ 返回结果没有顺序要求 解题思路: 首先来看一下我的错误方法: select employee_id, department_i
阅读全文
摘要:1.left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) 只返回两个表中联结字段相等的行 2. 当表格为空时,如何返回null值? 网上找到一篇题解感觉说
阅读全文
摘要:预备知识: 1. date_add函数是一个用于在日期上添加指定时间间隔的函数,它的一般语法如下: DATE_ADD(date, INTERVAL expression unit) date 是指定的日期。 expression 是一个表示要添加的值的表达式。 unit 是时间单位,例如 YEAR、
阅读全文
摘要:解题思路: 其实大体思路都有,但是不知道排序之后的第一行怎么选择。 首先用一个子查询,分组后利用min()函数选取order_date最小的行。 SELECT customer_id, MIN(order_date) FROM delivery GROUP BY customer_id 然后进入主查
阅读全文
摘要:预备知识: 1. DATE_FORMAT(date, format):用于以不同的格式显示日期/时间数据,date参数是合法的日期,format规定日期/时间的输出格式。 DATE_FORMAT(date, format) date:要格式化的日期值 format:指定日期输出格式的字符串 常见的日
阅读全文
摘要:select query_name, round(avg(rating/position), 2) as quality, round(sum(rating<3)*100/count(query_name), 2) as poor_query_percentage from Queries grou
阅读全文
摘要:解题思路: 1. 不同赛事是需要进行分别统计的 2. 两个表虽然有共同的字段,但是不需要join,因为统计一门赛事注册的user_id在Register表中,统计user_id总数量在Users表中,两者都是可以独立查询出来的。 做题步骤: 1. 不同赛事进行分组 2. 分别统计一门赛事中注册了的u
阅读全文
摘要:解题思路: SELECT Project.project_id AS project_id, ROUND(SUM(Employee.experience_years)/COUNT(Project.project_id), 2) AS average_years FROM Project LEFT J
阅读全文
摘要:问题是寻找每种产品的平均售价,平均售价=销售总额/数量。 解题思路: 我们只需要计算出每个产品的销售总额和总数量,总数量可以用UnitSold计算得出,使用GROUP BY和SUM函数即可。 SELECT product_id, SUM(units) FROM UnitsSold GROUP BY
阅读全文
1