【LeetCode高频SQL50题-基础版】打卡第7天:第36~40题

news2024/11/25 6:49:18

文章目录

  • 【LeetCode高频SQL50题-基础版】打卡第7天:第36~40题
    • ⛅前言
    • 按分类统计薪水
      • 🔒题目
      • 🔑题解
    • 上级经理已离职的公司员工
      • 🔒题目
      • 🔑题解
    • 换座位
      • 🔒题目
      • 🔑题解
    • 电影评分
      • 🔒题目
      • 🔑题解
    • 餐馆营业额变化增长
      • 🔒题目
      • 🔑题解

【LeetCode高频SQL50题-基础版】打卡第7天:第36~40题

⛅前言

  在这个博客专栏中,我将为大家提供关于 LeetCode 高频 SQL 题目的基础版解析。LeetCode 是一个非常受欢迎的编程练习平台,其中的 SQL 题目涵盖了各种常见的数据库操作和查询任务。对于计算机科班出身的同学来说,SQL 是一个基础而又重要的技能。不仅在面试过程中经常会遇到 SQL 相关的考题,而且在日常的开发工作中,掌握 SQL 的能力也是必备的。

  本专栏的目的是帮助读者掌握 LeetCode 上的高频 SQL 题目,并提供对每个题目的解析和解决方案。我们将重点关注那些经常出现在面试中的题目,并提供一个基础版的解法,让读者更好地理解问题的本质和解题思路。无论你是准备找工作还是提升自己的技能,在这个专栏中,你可以学习到很多关于 SQL 的实践经验和技巧,从而更加深入地理解数据库的操作和优化。

  我希望通过这个专栏的分享,能够帮助读者在 SQL 的领域里取得更好的成绩和进步。如果你对这个话题感兴趣,那么就跟随我一起,开始我们的 LeetCode 高频 SQL 之旅吧!

  • 博客主页💖:知识汲取者的博客
  • LeetCode高频SQL100题专栏🚀:LeetCode高频SQL100题_知识汲取者的博客-CSDN博客
  • Gitee地址📁:知识汲取者 (aghp) - Gitee.com
  • 题目来源📢:高频 SQL 50 题(基础版) - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台

按分类统计薪水

🔒题目

题目来源:1907.按分类统计薪水

image-20231012120209375

🔑题解

  • 考察知识点unionsum

分析:这一题的难点(当然这个难点是对于我而言的,可能对你而言很简单😄)在于对于将不同列名映射到同一个列名中来,也就是 category 这一列,居然是直接使用一个字符串常量来实现映射,平常没怎么见过这种写法,所以一时也没有想到,其实把这一点想到了应该会很简单,因为 union 还是很常见的

1)查询出处于 Low Salary 的账号数量

select 'Low Salary' category, sum(if(income < 20000, 1, 0)) accounts_count
from Accounts;
| category   | accounts_count |
| ---------- | -------------- |
| Low Salary | 1              |

2)查询出处于 Average Salary 的账号数量

select 'Average Salary' category, sum(if(income between 20000 and 50000, 1, 0)) accounts_count
from Accounts;

当然这里也可以使用 <= 和 >= 加一个 and 进行连接,用于替代 between and

| category       | accounts_count |
| -------------- | -------------- |
| Average Salary | 0              |

3)查询出处于 High Salary 的账号数量

select 'High Salary' category, sum(income > 50000) accounts_count
from Accounts;
| category    | accounts_count |
| ----------- | -------------- |
| High Salary | 3              |

4)使用 union 将前面所有的结果集进行合并

select 'Low Salary' category, sum(if(income < 20000, 1, 0)) accounts_count
from Accounts
union
select 'Average Salary' category, sum(if(income between 20000 and 50000, 1, 0)) accounts_count
from Accounts
union
select 'High Salary' category, sum(income > 50000) accounts_count
from Accounts;

温馨提示:这里更加推荐使用 union all ,性能更高,通过提交测试可以发现,使用 union 普遍在 5%~20%,union all 普遍在 50%~70%

这里也不仅仅只能使用 sum 函数,也可以使用 count 函数

select 'Low Salary' category, count(*) accounts_count
from Accounts
where income < 20000
union all
select 'Average Salary' category, count(*) accounts_count
from Accounts
where income between 20000 and 50000
union all
select 'High Salary' category, count(*) accounts_count
from Accounts
where income > 50000;

经过提交测试,发现这种写法的性能更高,普遍高达 90% 以上

上级经理已离职的公司员工

🔒题目

题目来源:1978.上级经理已离职的公司员工

image-20231012120259755

🔑题解

  • 考察知识点

分析:主要分为三步

  1. 查询处薪资小于30000的员工
  2. 查询出所有在职员工的id
  3. 判断小于30000的员工的 manger_id 是否在 2 所查询的结果集中

1)查询处薪资小于30000的员工

select *
from Employees
where salary < 30000;
| employee_id | name   | manager_id | salary |
| ----------- | ------ | ---------- | ------ |
| 1           | Kalel  | 11         | 21241  |
| 11          | Joziah | 6          | 28485  |

2)查询出所有在职员工的 id

select distinct employee_id
from Employees;
| employee_id |
| ----------- |
| 3           |
| 12          |
| 13          |
| 1           |
| 9           |
| 11          |

3)判断小于30000的员工的 manger_id 是否在 2 所查询的结果集中

select employee_id
from Employees
where salary < 30000 and manager_id not in (
    select distinct employee_id
    from Employees
)
order by employee_id asc;

换座位

🔒题目

题目来源:626.换座位

image-20231012120405021

🔑题解

  • 考察知识点mod

分析:陷入了思维定式,我下意识的选择奖两个记录像冒泡排序一样进行两两交换,结果发现自己并不知道如何实现。后面看了题解,发现居然就是通过修改id即可实现两两交换😆,一下没想到,看完之后我就悟了,具体的实现思路如下:

  1. id为奇数的统一加一
  2. id为偶数的统一都减一
  3. 如果记录总数为奇数,最后一条记录的id不需要改变

解法一:自连接

1)第一步,先查询出记录的总数

select count(*) counts
from seat;
| counts |
| ------ |
| 5      |

2)将查询道的记录连接每条记录中

select *
from seat, (select count(*) counts 
            from seat) seat_counts;
| id | student | counts |
| -- | ------- | ------ |
| 1  | Abbot   | 5      |
| 2  | Doris   | 5      |
| 3  | Emerson | 5      |
| 4  | Green   | 5      |
| 5  | Jeames  | 5      |

3)对上面查询出的结果集使用 case 对 id 进行判断,最后进行应该排序

select (
    case
        when mod(id, 2) != 0 and counts != id then id + 1 -- id为奇数并且不为最后一条记录
        when mod(id, 2) != 0 and counts = id then id -- id为奇数但为最后一条记录
        else id - 1 -- id为偶数
    end) id,
    student
from seat, (select count(*) counts from seat) seat_counts
order by id asc;

备注:上面的case when结果全部可以由if替代

解法二:子查询

解法一通过自连接将将总记录数添加到每一条记录上,然后进行查询,我们也可以不这些写,直接使用最大id数来判断是否是最后一条记录,这种写法可能效率没有那么高,因为每一行都需要去查询表的最大id

注意:不要使用max函数去判断是否是最后一条记录,max聚合函数会将所有结果聚合为一条记录

错误写法:

select (
    case
        when mod(id, 2) != 0 and max(id) != id then id + 1 -- id为奇数并且不为最后一条记录
        when mod(id, 2) != 0 and max(id) = id then id -- id为奇数但为最后一条记录
        else id - 1 -- id为偶数
    end) id,
    student
from seat
order by id asc;

这样只会得到一条记录,因为max是遍历所有结果后

select (
    case
        when mod(id, 2) != 0 and (select max(id) from seat) != id then id + 1 -- id为奇数并且不为最后一条记录
        when mod(id, 2) != 0 and (select max(id) from seat) = id then id -- id为奇数但为最后一条记录
        else id - 1 -- id为偶数
    end) id,
    student
from seat
order by id asc;

解法三:使用窗口函数

select (case
        when mod(id, 2) != 0 and counts != id then id + 1 -- id为奇数并且不为最后一条记录
        when mod(id, 2) != 0 and counts = id then id -- id为奇数但为最后一条记录
        else id - 1 -- id为偶数
       end) id,
       student
from(select *, count(*) over() counts from seat) seat_counts
order by id asc;

电影评分

🔒题目

题目来源:1341.电影评分

image-20231012150131270

🔑题解

  • 考察知识点countsumunion allmonthyear子查询order bygroup bylimit

分析:这一题的想要写出来比较简单,但是需要一步一步来,我写的这个SQL可能比较长,涉及到的知识点也比较多

主要思路如下所示:

  1. 查询出一个结果,查找评论电影数量最多的用户名
  2. 查询出第二个结果,查找在 February 2020 平均评分最高 的电影名称。如果出现平局,返回字典序较小的电影名称。
  3. 通过union all将两个结果聚合起来

1)查询出第一个结果,查找评论电影数量最多的用户名

select *, count(*) counts
from MovieRating mr left join Users u on mr.user_id = u.user_id
group by mr.user_id
order by counts desc, u.name asc;
| movie_id | user_id | rating | created_at | user_id | name   | counts |
| -------- | ------- | ------ | ---------- | ------- | ------ | ------ |
| 1        | 1       | 3      | 2020-01-12 | 1       | Daniel | 3      |
| 1        | 2       | 4      | 2020-02-11 | 2       | Monica | 3      |
| 1        | 3       | 2      | 2020-02-12 | 3       | Maria  | 2      |
| 1        | 4       | 1      | 2020-01-01 | 4       | James  | 1      |

然后取第一个记录即可

select name results
from (select u.name, count(*) counts
      from MovieRating mr left join Users u on mr.user_id = u.user_id
      group by mr.user_id
      order by counts desc, u.name asc
      limit 1) t1;
| results |
| ------- |
| Daniel  |

2)查询出第二个结果

select m.title, sum(mr.rating)/count(*) average
from Movies m left join MovieRating mr on m.movie_id = mr.movie_id
where month(mr.created_at) = 2
group by m.movie_id
order by average desc, title asc

备注:其实这里的sum(mr.rating)/count(*)可以直接由avg(mr.rating)进行替换

| title    | average |
| -------- | ------- |
| Frozen 2 | 3.5     |
| Joker    | 3.5     |
| Avengers | 3       |

然后取第一条记录即可

select title results
from (select m.title, sum(mr.rating)/count(*) average
      from Movies m left join MovieRating mr on m.movie_id = mr.movie_id
      where month(mr.created_at) = 2 and year(mr.created_at) = 2020
      group by m.movie_id
      order by average desc, title asc
      limit 1) t2;

备注:这里的 month(mr.created_at) = 2 and year(mr.created_at) = 2020可以直接替换为date_formate(created_at, '%Y-%m') = '2020-02'

| results  |
| -------- |
| Frozen 2 |

3)将两个结果集进行合并

select name results
from (select u.name, count(*) counts
      from MovieRating mr left join Users u on mr.user_id = u.user_id
      group by mr.user_id
      order by counts desc, u.name asc
      limit 1) t1
union all
select title results
from (select m.title, sum(mr.rating)/count(*) average
      from Movies m left join MovieRating mr on m.movie_id = mr.movie_id
      where month(mr.created_at) = 2 and year(mr.created_at) = 2020
      group by m.movie_id
      order by average desc, title asc
      limit 1) t2;

注意点

  1. 这里一定要使用union all而不是union,因为当电影名和用户名重叠时,union得到的记录只有一条
  2. 不要被示例数据给干扰了,真实的数据中并不都是2020年的,所以需要添加一个判断,只查询出2020年的
  3. 对于字符串类型的数据,如果使用 order by默认就按照字典进行排序的

这里在提供一种使用窗口函数的解法

SELECT results
FROM (
  SELECT name AS results, RANK() OVER(ORDER BY COUNT(*) DESC, name) AS RANKING
  FROM Users
  INNER JOIN MovieRating USING(user_id)
  GROUP BY user_id
  UNION ALL
  SELECT title AS results, RANK() OVER(ORDER BY AVG(rating) DESC, title) AS RANKING
  FROM MovieRating
  INNER JOIN Movies USING(movie_id)
  WHERE DATE_FORMAT(created_at, '%Y-%m') = '2020-02'
  GROUP BY movie_id
) T
WHERE T.RANKING = 1

餐馆营业额变化增长

🔒题目

题目来源:1321.餐馆营业额变化增长

image-20231012150211084

🔑题解

  • 考察知识点子查询sumjoingroup byorder by

分析:这题难点在于筛选出前七天的数据,只要将这个点解决了,其实就不难了,其实就是子查询的灵活运用,通过构造出合适的临时表,才能够更方便的操作,主要有以下几步

  1. 通过自连接得到所有当前天前七天的顾客购买情况
  2. 过滤出没有前面不够七天的商品
  3. 分组,从第七天开始,没天商品的购买总价值、已经平均值

方法一:自连接

1)首先我们通过join自连接查询出当前天开始前六天的用户,同时需要排除连续天数小于六天的

select *
from (select distinct visited_on 
      from Customer) t1 
	  join Customer t2 
	  on datediff(t1.visited_on, t2.visited_on) between 0 and 6
where t1.visited_on >= (select min(visited_on) from Customer ) + 6
order by t1.visited_on;

备注:这里的order by只是为了更好查看结果集,最终的结果可以去掉这个order by,没有必要耗费多余的资源去进行一个排序

+------------+-------------+---------+------------+--------+
| visited_on | customer_id | name    | visited_on | amount |
+------------+-------------+---------+------------+--------+
| 2019-01-07 |           1 | Jhon    | 2019-01-01 |    100 |
| 2019-01-07 |           2 | Daniel  | 2019-01-02 |    110 |
| 2019-01-07 |           3 | Jade    | 2019-01-03 |    120 |
| 2019-01-07 |           4 | Khaled  | 2019-01-04 |    130 |
| 2019-01-07 |           5 | Winston | 2019-01-05 |    110 |
| 2019-01-07 |           6 | Elvis   | 2019-01-06 |    140 |
| 2019-01-07 |           7 | Anna    | 2019-01-07 |    150 |
| 2019-01-08 |           2 | Daniel  | 2019-01-02 |    110 |
| 2019-01-08 |           3 | Jade    | 2019-01-03 |    120 |
| 2019-01-08 |           4 | Khaled  | 2019-01-04 |    130 |
| 2019-01-08 |           5 | Winston | 2019-01-05 |    110 |
| 2019-01-08 |           6 | Elvis   | 2019-01-06 |    140 |
| 2019-01-08 |           7 | Anna    | 2019-01-07 |    150 |
| 2019-01-08 |           8 | Maria   | 2019-01-08 |     80 |
| 2019-01-09 |           3 | Jade    | 2019-01-03 |    120 |
| 2019-01-09 |           4 | Khaled  | 2019-01-04 |    130 |
| 2019-01-09 |           5 | Winston | 2019-01-05 |    110 |
| 2019-01-09 |           6 | Elvis   | 2019-01-06 |    140 |
| 2019-01-09 |           7 | Anna    | 2019-01-07 |    150 |
| 2019-01-09 |           8 | Maria   | 2019-01-08 |     80 |
| 2019-01-09 |           9 | Jaze    | 2019-01-09 |    110 |
| 2019-01-10 |           4 | Khaled  | 2019-01-04 |    130 |
| 2019-01-10 |           5 | Winston | 2019-01-05 |    110 |
| 2019-01-10 |           6 | Elvis   | 2019-01-06 |    140 |
| 2019-01-10 |           7 | Anna    | 2019-01-07 |    150 |
| 2019-01-10 |           8 | Maria   | 2019-01-08 |     80 |
| 2019-01-10 |           9 | Jaze    | 2019-01-09 |    110 |
| 2019-01-10 |           1 | Jhon    | 2019-01-10 |    130 |
| 2019-01-10 |           3 | Jade    | 2019-01-10 |    150 |
+------------+-------------+---------+------------+--------+

2)最难想到的是第一步,其实只要得到了上面那张表,我们接下来的操作就会简单很多。我们只需要利用聚合函数对上面的结果进行一个聚合,然后求取平均值即可

select visited_on, 
       sum(amount) amount, 
       round(sum(amount) / 7, 2) average_amount
from(select t1.visited_on, t2.amount
     from (select distinct visited_on 
           from Customer) t1 
	         join Customer t2 
	         on datediff(t1.visited_on, t2.visited_on) between 0 and 6
      where t1.visited_on >= (select min(visited_on) from Customer ) + 6
) t
group by visited_on
order by visited_on asc;

方法二:窗口函数

这里如果使用窗口函数,可能会显得很简单,比那个分组要好理解的多😄,但是唯一的缺点就是MySQL的版本至少得是8.0

select *, 
     dense_rank() over(order by visited_on) `row_number`,
     sum(amount) over(order by visited_on range interval 6 day preceding) total
from Customer;
| customer_id | name    | visited_on | amount | row_number | total |
| ----------- | ------- | ---------- | ------ | ---------- | ----- |
| 1           | Jhon    | 2019-01-01 | 100    | 1          | 100   |
| 2           | Daniel  | 2019-01-02 | 110    | 2          | 210   |
| 3           | Jade    | 2019-01-03 | 120    | 3          | 330   |
| 4           | Khaled  | 2019-01-04 | 130    | 4          | 460   |
| 5           | Winston | 2019-01-05 | 110    | 5          | 570   |
| 6           | Elvis   | 2019-01-06 | 140    | 6          | 710   |
| 7           | Anna    | 2019-01-07 | 150    | 7          | 860   |
| 8           | Maria   | 2019-01-08 | 80     | 8          | 840   |
| 9           | Jaze    | 2019-01-09 | 110    | 9          | 840   |
| 1           | Jhon    | 2019-01-10 | 130    | 10         | 1000  |
| 3           | Jade    | 2019-01-10 | 150    | 10         | 1000  |
select distinct visited_on, 
	   total amount, 
	   round(total/7, 2) average_amount 
from(select visited_on, 
     dense_rank() over(order by visited_on) `row_number`,
     sum(amount) over(order by visited_on range interval 6 day preceding) total
     from Customer) t 
where `row_number` > 6
order by visited_on asc;

注意:上面这条SQL只能对于连续日期可以通过,如果日期不连续就无法通过,这个题目是有问题的,题目中说

image-20231013224422649

也就是说每天都有一名顾客,这就说明日期必定是连续的,但是经过提交发现有一些示例数据并不是连续的,也就是说明题目的描述是有问题的!!!

所以我们需要对上面的SQL进行一个调整,既然无法使用时间间隔表达式,我们就可以换一种思路,直接利用datediff函数来实现过滤

select distinct visited_on, 
	   total amount, 
	   round(total/7, 2) average_amount 
from(select visited_on, 
     dense_rank() over(order by visited_on) `row_number`,
     sum(amount) over(order by visited_on range interval 6 day preceding) total
     from Customer) t 
where datediff(visited_on, (select min(visited_on) from Customer)) >= 6
order by visited_on asc;

方法三:通用表达式

分析:略……今天累了,后面补上讲解吧

关于通用表达式可以参考博主的这篇文章:MySQL8新特性通用表达式详解

with t as (select visited_on, sum(amount) amount
        from Customer 
        group by visited_on)
select t1.visited_on, 
      sum(t2.amount) amount,
      round(sum(t2.amount)/7, 2) average_amount
from t t1, t t2
where datediff(t1.visited_on, t2.visited_on) between 0 and 6
group by t1.visited_on
having datediff(visited_on, (select min(visited_on) from Customer)) >= 6
order by visited_on asc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1089905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

buuctf week2-web-ez_sql

闭合之后尝试判断字段数&#xff0c;存在WAF&#xff0c;使用大小写绕过&#xff08;后面的sql语句也需要进行大小写绕过&#xff09; ?id1 Order by 5-- 测出有5列 ?id1 Order by 6-- 查一下数据库名、版本、用户等信息 ?id1Union Select database(),version(),user(),4,…

ACP.复盘方法

复盘要怎么做的有水准&#xff0c;让领导满意&#xff0c;方式方法很重要。今天给你们安利5种复盘方法&#xff0c;保准你省事&#xff0c;领导还满意。 一、KPT复盘法 7月份年中一直在做和复盘相关的事&#xff0c;像公司的OKR复盘、年中战略规划&#xff0c;不过日常很多生…

Unity应用开发——开启无限创造之旅

Unity是一款令人叹为观止的跨平台游戏开发引擎&#xff0c;它打开了创作者们的无限创造之门。Unity不仅仅限于游戏开发&#xff0c;它还在虚拟现实、增强现实、模拟训练等多个领域取得了巨大成功。在经过充满激情和创意的Unity应用开发课程之后&#xff0c;世达教育迎来了这段精…

十七、【渐变工具组】

文章目录 渐变工具油漆桶工具 渐变工具 渐变样式有5种&#xff0c;分别是线性渐变&#xff0c;径向渐变&#xff0c;角度渐变&#xff0c;对称渐变&#xff0c;菱形渐变 另外渐变工具的颜色可以进行编辑&#xff0c;需要先打开渐变编辑工具&#xff1a; 如何使用渐变编辑工…

grafana api创建dashboard 记录

文章目录 json model导入申请api key创建dashboard删除dashboard json model导入 直接在ui通过json model 导入&#xff0c;开发自己用还好&#xff0c;但对非开发人员不太友好&#xff0c;故考虑通过api后台自动创建 api doc : https://grafana.com/docs/grafana/v9.3/devel…

【重拾C语言】十、递归程序设计

目录 前言 十、递归程序设计 10.1 计算n&#xff01;——递归程序设计 10.2 程序设计实例 10.2.1 汉诺塔 10.2.2 齿轮 10.2.3 组合 10.3 计算算术表达式的值——间接递归 10.4 递归程序执行过程 前言 递归程序设计是一种编程技术&#xff0c;其中一个函数通过调用自身…

Navicat For MySQL使用指南

勾选填充零后的效果&#xff0c;就是不够的位数用零来补齐&#xff01;

Eclipse插件安装版本不兼容问题解决方案——Papyrus插件为例

项目场景: Eclipse Papyrus安装后,没有新建Papyrus工程选项,也没有新建Papyrus Model的选项。 打开Papyrus Model会报错 问题描述 同样的,安装其他插件也是。可能某个插件之前安装是好用的,结果Eclipse的版本更新了,就再也安装不好用了 原因分析: 根本原因是因为包之…

交通 | python网络爬虫:“多线程并行 + 多线程异步协程

推文作者&#xff1a;Amiee 编者按&#xff1a; 常规爬虫都是爬完一个网页接着爬下一个网页&#xff0c;不适应数据量大的网页&#xff0c;本文介绍了多线程处理同时爬取多个网页的内容&#xff0c;提升爬虫效率。 1.引言​ 一般而言&#xff0c;常规爬虫都是爬完一个网页接着…

【MySql】7- 实践篇(五)

文章目录 1. 加锁规则1.1 案例一&#xff1a;等值查询间隙锁1.2 案例二&#xff1a;非唯一索引等值锁1.3 案例三&#xff1a;主键索引范围锁1.4 案例四&#xff1a;非唯一索引范围锁1.5 案例五&#xff1a;唯一索引范围锁 bug1.6 案例六&#xff1a;非唯一索引上存在"等值…

TLS 详解

目录 TLS 定义HTTPS HTTP over TLS.加密记录层分片 (Fragmentation)记录压缩和解压缩 (Record compression and decompression)空或标准流加密 (Null or standard stream cipher)CBC 块加密 (分组加密)记录有效载荷保护 (Record payload protection)密钥计算 (Key calculation…

【C++初阶】关键字命名空间缺省函数函数重载入门必看!!!超详解!!!

主页点击直达&#xff1a;个人主页 我的小仓库&#xff1a;代码仓库 C语言偷着笑&#xff1a;C语言专栏 数据结构挨打小记&#xff1a;初阶数据结构专栏 Linux被操作记&#xff1a;Linux专栏 LeetCode刷题掉发记&#xff1a;LeetCode刷题 算法&#xff1a;算法专栏 C头…

解锁互联网安全的新钥匙:JWT(JSON Web Token)

目录 前言 一、JWT简介 1. 什么是JWT&#xff1f; ​编辑 2. JWT的工作原理 3.JWT如何工作的 4. JWT的优势 5. 在实际应用中使用JWT 6.传统Session和JWT认证的区别 6.1.session认证方式 6.2.JWT认证方式 7.基于Token的身份认证 与 基于服务器的身份认证 二、JWT的…

一文带你快速上手MySQL8窗口函数,实现更高效的数据处理

文章目录 MySQL8窗口函数前言窗口函数相关概念介绍窗口函数分区介绍 窗口函数的使用语法介绍实战演练示例一&#xff1a;聚合函数示例二&#xff1a;排名函数示例三&#xff1a;偏移函数示例四&#xff1a;分布函数示例五&#xff1a;首尾函数示例六&#xff1a;其它函数 总结 …

GIS小技术分享(一):python中json数据转geojson或者shp

1.环境需求 geopandspandasshapelyjsonpython3 2.输入数据&#xff08;path字段&#xff0c;线条&#xff09; [{"id": "586A685D568311B2A16F33FCD5055F7B","name": "普及江","path": "[[116.35178835446628,23.57…

NeuroImage | 右侧颞上回在语义规则学习中的作用:来自强化学习模型的证据

在现实生活中&#xff0c;许多规则的获取通常需要使用语言作为桥梁&#xff0c;特别是语义在信息传递中起着至关重要的作用。另外&#xff0c;个体使用的语言往往具有明显的奖励和惩罚元素&#xff0c;如赞扬和批评。一种常见的规则是寻求更多的赞扬&#xff0c;同时避免批评。…

十八、【模糊工具组】

文章目录 模糊工具锐化工具涂抹工具 模糊工具 使用模糊工具可以对图像边缘以及其他一部分区域进行编辑&#xff0c;可以使其变得模糊&#xff0c;从而更加突出主体&#xff1a; 锐化工具 锐化工具跟模糊工具是相反的一个工具啊&#xff0c;锐化工具主要是增强图像的颗粒度&am…

20基于MATLAB的车牌识别算法,在环境较差的情景下,夜间识别度很差的车牌号码可以精确识别出具体结果,程序已调通,可直接替换自己的数据跑。

基于MATLAB的车牌识别算法&#xff0c;在环境较差的情景下&#xff0c;夜间识别度很差的车牌号码可以精确识别出具体结果&#xff0c;程序已调通&#xff0c;可直接替换自己的数据跑。 20matlab车牌识别 (xiaohongshu.com)

大数据Doris(十):添加BE步骤

文章目录 添加BE步骤 一、使用mysql连接 二、​​​​​​​添加be

npm安装依赖报错npm ERR! code ENOTFOUND npm ERR! errno ENOTFOUND、npm run dev报错记录

npm安装依赖报错npm ERR! code ENOTFOUND npm ERR! errno ENOTFOUND_得我所得&#xff0c;爱我所爱的博客-CSDN博客npm安装依赖报错今天在学习webpack的时候&#xff0c;在使用npm install来安装一个局部的webpack时候&#xff0c;报出一下错误:npm ERR! code ENOTFOUNDnpm ERR…