二十五、SQL 数据分析实战(9个中等难度的SQL题目)

news2024/10/5 3:22:09

文章目录

  • 题目1: App 使用频率分析
  • 题目2: App 下载情况统计
  • 题目3: 寻找活跃学习者
  • 题目4: 商品分类整理
  • 题目5: 商品销售分析
  • 题目6: 网约车司机收益统计
  • 题目7: 网站登录时间间隔统计
  • 题目8: 不同区域商品收入统计
  • 题目9: 信贷逾期情况统计

题目1: App 使用频率分析

现有一张用户使用 App 时间表 middle_app_login,middle_app_login 表的数据如下表所示:

mysql> SELECT * FROM middle_app_login;
-- user_id(用户ID):VARCHAR start_time(登录App时间):DATETIME end_time(退出App时间):DATETIME
+---------+---------------------+---------------------+
| user_id | start_time          | end_time            |
+---------+---------------------+---------------------+
| u001    | 2021-04-01 10:12:30 | 2021-04-01 11:13:21 |
| u002    | 2021-04-02 08:40:21 | 2021-04-02 10:13:41 |
| u003    | 2021-04-02 15:31:01 | 2021-04-02 15:54:42 |
| u001    | 2021-04-04 13:25:40 | 2021-04-04 17:52:46 |
| u003    | 2021-04-06 07:10:20 | 2021-04-06 08:03:15 |
| u001    | 2021-04-09 18:20:34 | 2021-04-09 18:23:58 |
| u001    | 2021-04-10 14:25:55 | 2021-04-10 15:01:25 |
+---------+---------------------+---------------------+
7 rows in set (0.00 sec)

【题目1】根据该表统计出每个用户每次退出App与下一次登录App间隔的平均时间,如果用户只登录过一次App,则不统计,要求输出的平均时间的单位为分钟,并将其四舍五入保留一位小数。输出内容包括:user_id(用户ID)、avg_minute(平均间隔时间),结果样例如下图所示:
在这里插入图片描述
【题目1解析】本题使用LEAD()函数对每个用户登录App的时间进行分组排序,生成新的一列,以构造出上一次退出App的时间与下一次登录App的时间在同一行的表格结构,方便之后进行处理。然后筛选出为非空的行,使用TIMESTAMPDIFF()函数计算start_time_lead与end_time的分钟差,再求平均值,并将其四舍五入保留一位小数即可得到结果。涉及知识点:子查询、日期/时间处理函数、窗口函数、空值处理、小数保留、分组聚合。参考代码如下:

mysql> -- ① 按照解析的写法
mysql> SELECT user_id
    ->      , ROUND(AVG(TIMESTAMPDIFF(MINUTE, end_time, start_time_lead)), 1) AS avg_minute
    -> FROM (SELECT user_id
    ->            , start_time
    ->            , end_time
    ->            , LEAD(start_time, 1) OVER (PARTITION BY user_id ORDER BY start_time) AS start_time_lead
    ->       FROM middle_app_login) a
    -> WHERE start_time_lead IS NOT NULL
    -> GROUP BY user_id;
+---------+------------+
| user_id | avg_minute |
+---------+------------+
| u001    |     4293.3 |
| u003    |     5235.0 |
+---------+------------+
2 rows in set (0.00 sec)

mysql> -- ② 第二种写法
mysql> SELECT user_id, ROUND(AVG(end_time_lag), 1) AS avg_minute
    -> FROM (SELECT a1.user_id,
    ->              TIMESTAMPDIFF(MINUTE, LAG(end_time, 1) OVER (PARTITION BY a1.user_id ORDER BY start_time), a1.start_time
    ->                  ) AS end_time_lag
    ->       FROM middle_app_login a1
    ->                INNER JOIN (SELECT user_id FROM middle_app_login GROUP BY user_id HAVING COUNT(*) > 1) a2
    ->                           ON a1.user_id = a2.user_id) a
    -> WHERE a.end_time_lag IS NOT NULL
    -> GROUP BY user_id;
+---------+------------+
| user_id | avg_minute |
+---------+------------+
| u001    |     4293.3 |
| u003    |     5235.0 |
+---------+------------+
2 rows in set (0.00 sec)

题目2: App 下载情况统计

现有一张 App 累计下载情况表 middle_app_download,该表记录了应用商品中 App 累计下载次数的信息,middle_app_download 表的数据如下所示:

mysql> SELECT * FROM middle_app_download;
-- app_id(AppID):VARCHAR app_type(App类型):VARCHAR download(下载次数):INT
+--------+----------+----------+
| app_id | app_type | download |
+--------+----------+----------+
| a001   | A        |    12432 |
| a002   | B        |     9853 |
| a003   | A        |     1924 |
| a004   | C        |     2679 |
| a005   | C        |    29104 |
| a006   | A        |    10235 |
| a007   | B        |     5704 |
| a008   | B        |     2850 |
| a009   | B        |     8235 |
| a010   | C        |     9746 |
+--------+----------+----------+
10 rows in set (0.00 sec)

【题目2】查询不同类型App的平均下载次数,需要将下载次数排在前10%与后10%的App排除在外。输出内容包括:app_type(App类型)、avg_download(平均下载次数),结果样例如下图所示:
在这里插入图片描述
【题目2解析】使用RANK()函数生成新的一列作为下载量排名(ranking),将该部分作为子查询内部,并在子查询外部通过WHERE筛选出符合要求的记录,分组统计平均下载次数即可。涉及知识点:子查询、窗口函数、空值处理、分组聚合。参考代码如下:

mysql> SELECT a.app_type, AVG(a.download) as avg_download
    -> FROM (SELECT app_id, app_type, download, RANK() OVER (ORDER BY download DESC ) AS download_rank
    ->       FROM middle_app_download) a
    -> WHERE a.download_rank > (SELECT COUNT(*) FROM middle_app_download) * 0.1
    ->   AND a.download_rank < (SELECT COUNT(*) FROM middle_app_download) * 0.9
    -> GROUP BY a.app_type;

题目3: 寻找活跃学习者

现有一张用户学习打卡表 middle_active_learning,middle_active_learning 表中数据如下所示:

mysql> SELECT * FROM middle_active_learning;
-- user_id(用户ID):VARCHAR study_date(打卡日期):DATE
+---------+------------+
| user_id | study_date |
+---------+------------+
| u001    | 2021-04-01 |
| u002    | 2021-04-01 |
| u003    | 2021-04-03 |
| u001    | 2021-04-06 |
| u003    | 2021-04-07 |
| u001    | 2021-04-12 |
| u001    | 2021-04-13 |
| u002    | 2021-04-14 |
| u001    | 2021-04-23 |
| u002    | 2021-04-24 |
| u001    | 2021-04-26 |
| u003    | 2021-04-27 |
| u002    | 2021-04-30 |
+---------+------------+
13 rows in set (0.00 sec)

【题目3】根据该表统计2021年4月中每周都学习打卡的用户。输出内容包括: user_id(用户ID),结果样例如下图所示:
在这里插入图片描述
【题目3解析】使用WEEKOFYEAR函数获取周数,限制study_date为2021年4月,由于用户可能一周内打卡多次,因此使用DISTINCT进行去重,为之后的统计操作做铺垫,通过GROUP BY对用户进行分组,统计出打卡周的数量等于5的用户(2021年4月跨越5周),即可得到每周打卡的用户。涉及知识点:子查询、DISTINCT、日期/时间处理函数。参考代码如下:

mysql> SELECT a.user_id
    -> FROM (SELECT DISTINCT user_id
    ->                     , WEEKOFYEAR(study_date) AS study_week
    ->       FROM middle_active_learning
    ->       WHERE study_date >= '2021-04-01'
    ->         AND study_date <= '2021-04-30') a
    -> GROUP BY a.user_id
    -> HAVING COUNT(a.study_week) = 5;

题目4: 商品分类整理

现有一张商品分类表 middle_commodity_classification,middle_commodity_classification 表的数据如下表所示:

mysql> SELECT * FROM middle_commodity_classification;
-- current_category(商品当前分类):VARCHAR parent_category(商品父类别):VARCHAR
+------------------+-----------------+
| current_category | parent_category |
+------------------+-----------------+
|| 厨具            |
| 厨具             | 生活用品        |
|| 餐具            |
| 水果刀           ||
| 剔骨刀           ||
| 餐具             | 生活用品        |
| 汤碗             ||
+------------------+-----------------+
7 rows in set (0.00 sec)

【题目4】查询得到下图所示的结果样例。输出内容包括:三级类目、二级类目、一级类目、根类目,结果样例如下图所示:
在这里插入图片描述
【题目4解析】本题是分类关系的整理,显示的结果样例中有4层类别关系,需要通过3次表的自连接来实现。涉及知识点:自连接。参考代码如下:

mysql> SELECT m1.current_category AS '三级类目',
    ->        m1.parent_category  AS '二级类目',
    ->        m2.parent_category  AS '一级类目',
    ->        m3.parent_category  AS '根目录'
    -> FROM middle_commodity_classification m1,
    ->      middle_commodity_classification m2,
    ->      middle_commodity_classification m3
    -> WHERE m1.parent_category = m2.current_category
    ->   AND m2.parent_category = m3.current_category;

题目5: 商品销售分析

现有一张商品信息表 middle_commodity_info,该表记录了商品的基础信息,middle_commodity_info 数据如下所示:

mysql> SELECT * FROM middle_commodity_info;
-- sku_id(商品SKU):VARCHAR commodity_category(商品类别):VARCHAR director(商品销售负责人):VARCHAR
+--------+--------------------+----------+
| sku_id | commodity_category | director |
+--------+--------------------+----------+
| u001   | c001               | a001     |
| u003   | c002               | a001     |
| u002   | c003               | a002     |
+--------+--------------------+----------+
3 rows in set (0.00 sec)

还有一张商品销售金额表 middle_commodity_sale,该表记录了每天商品的销售情况,middle_commodity_sale 数据如下所示:

mysql> SELECT * FROM middle_commodity_sale;
-- date(日期):DATE sku_id(商品SKU):VARCHAR sales(商品销售金额):INT
+------------+--------+-------+
| date       | sku_id | sales |
+------------+--------+-------+
| 2020-12-20 | u001   | 12000 |
| 2020-12-20 | u002   |  8000 |
| 2020-12-20 | u003   | 11000 |
| 2020-12-21 | u001   | 20000 |
| 2020-12-21 | u003   | 16000 |
| 2020-12-22 | u003   | 11000 |
| 2020-12-22 | u001   | 34000 |
| 2020-12-22 | u002   | 11000 |
| 2020-12-23 | u003   | 18000 |
| 2020-12-23 | u001   | 30000 |
+------------+--------+-------+
10 rows in set (0.00 sec)

【题目5】查询商品销售负责人为a001在2020年每个商品类别销量最高的两天的信息,输出内容包括:commodity_category(商品分类)、date(日期)、total_sales(销量),结果样例如下图所示:
在这里插入图片描述
【题目5】参考代码如下:

mysql> SELECT commodity_category
    ->      , `date`
    ->      , total_sales
    -> FROM (
    ->          SELECT commodity_category
    ->               , `date`
    ->               , RANK() OVER (PARTITION BY commodity_category ORDER BY total_sales DESC) AS ranking
    ->               , total_sales
    ->          FROM (
    ->                   SELECT b.commodity_category
    ->                        , a.`date`
    ->                        , SUM(a.sales) AS total_sales
    ->                   FROM middle_commodity_sale a
    ->                            JOIN middle_commodity_info b
    ->                                 ON a.sku_id = b.sku_id
    ->                   WHERE b.director = 'a001'
    ->                     AND YEAR(a.`date`) = 2020
    ->                   GROUP BY b.commodity_category
    ->                          , a.`date`
    ->               ) c
    ->      ) d
    -> WHERE ranking <= 2;

题目6: 网约车司机收益统计

现有一张网约车订单表 middle_car_order,该表记录了某天的网约车订单相关信息,middle_car_order 数据如下表所示:

mysql> SELECT * FROM middle_car_order;
-- order_id(订单ID):VARCHAR driver_id(司机ID):VARCHAR order_amount(订单金额):DOUBLE
+----------+-----------+--------------+
| order_id | driver_id | order_amount |
+----------+-----------+--------------+
| o001     | d001      |         15.6 |
| o002     | d002      |         36.5 |
| o003     | d001      |         30.1 |
| o004     | d002      |         10.6 |
| o005     | d001      |         26.2 |
| o006     | d001      |         14.6 |
| o007     | d003      |         28.9 |
| o008     | d001      |          8.8 |
| o009     | d002      |         13.3 |
| o010     | d001      |         29.4 |
+----------+-----------+--------------+
10 rows in set (0.00 sec)

【题目6】司机的收入为订单金额的80%(表中订单金额的单位为元),如果司机当天的订单数量>=5且总订单金额>=100,则能收到额外补贴10元。请统计当天各司机的收入,并将结果按照收入降序排列且四舍五入保留两位小数。输出内容包括:driver_id(司机ID)、total_order(总订单量)、total_income(总收入),结果样例如下图所示:
在这里插入图片描述
【题目6】参考代码如下:

mysql> SELECT a.driver_id,
    ->        a.total_order,
    ->        CASE
    ->            WHEN total_order >= 5 AND total_amount >= 100 THEN ROUND(total_amount * 0.8 + 10, 2)
    ->            ELSE ROUND(total_amount * 0.8, 2) END AS 'total_income'
    -> FROM (SELECT driver_id, COUNT(driver_id) AS 'total_order', SUM(order_amount) AS 'total_amount'
    ->       FROM middle_car_order
    ->       GROUP BY driver_id) a ORDER BY total_income DESC;

题目7: 网站登录时间间隔统计

现有一张网站登录情况表 middle_login_info,该表记录了所有用户的网站登录信息,middle_login_info 表的数据如下所示:

mysql> SELECT * FROM  middle_login_info;
-- user_id(用户ID):VARCHAR login_time(用户登录日期):DATE
+---------+------------+
| user_id | login_time |
+---------+------------+
| a001    | 2021-01-01 |
| b001    | 2021-01-01 |
| a001    | 2021-01-03 |
| a001    | 2021-01-06 |
| a001    | 2021-01-07 |
| b001    | 2021-01-07 |
| a001    | 2021-01-08 |
| a001    | 2021-01-09 |
| b001    | 2021-01-09 |
| b001    | 2021-01-10 |
| b001    | 2021-01-15 |
| a001    | 2021-01-16 |
| a001    | 2021-01-18 |
| a001    | 2021-01-19 |
| b001    | 2021-01-20 |
| a001    | 2021-01-23 |
+---------+------------+
16 rows in set (0.00 sec)

【题目7】计算每个用户登录日期间隔小于5天的次数。输出内容包括:user_id(用户ID)、num(用户登录日期间隔小于5天的次数),结果样例如下图所示:
在这里插入图片描述
【题目7】参考代码如下:

mysql> SELECT a.user_id, COUNT(*) AS 'num'
    -> FROM (SELECT user_id,
    ->              login_time,
    ->              TIMESTAMPDIFF(DAY, LAG(login_time) OVER (PARTITION BY user_id ORDER BY login_time),
    ->                            login_time) AS date_diff
    ->       FROM middle_login_info) a
    -> WHERE a.date_diff < 5
    -> GROUP BY a.user_id;

题目8: 不同区域商品收入统计

现有一张不同城市的商品收入情况表 middle_sale_volume,该表记录了年份和区域等信息,middle_sale_volume 数据如下表所示:

mysql> SELECT * FROM middle_sale_volume;
-- year(年份):YEAR region(区域):VARCHAR city(城市):VARCHAR money(收入):INT
+------+--------+------+-------+
| year | region | city | money |
+------+--------+------+-------+
| 2018 | 东区   | A 市 |  1125 |
| 2019 | 东区   | A 市 |  1305 |
| 2020 | 东区   | A 市 |  1623 |
| 2018 | 东区   | C 市 |   845 |
| 2019 | 东区   | C 市 |   986 |
| 2020 | 东区   | C 市 |  1134 |
| 2018 | 西区   | M 市 |   638 |
| 2019 | 西区   | M 市 |  1490 |
| 2020 | 西区   | M 市 |  1120 |
| 2018 | 西区   | V 市 |  1402 |
| 2019 | 西区   | V 市 |  1209 |
| 2020 | 西区   | V 市 |  1190 |
+------+--------+------+-------+
12 rows in set (0.00 sec)

【题目8】统计每个区域的总收入和平均收入,并将结果四舍五入保留一位小数。输出内容包括:year(年份)、不同区域的总收入和平均收入,结果样例如下图所示:
在这里插入图片描述
【题目8】参考代码如下:

-- 第①种写法
mysql> SELECT a.`year`
    ->      , ROUND(SUM(IF(a.region = '东区', a.money, 0)), 1)
    ->     AS '东区总收入'
    ->      , ROUND(SUM(IF(a.region = '西区', a.money, 0)), 1)
    ->     AS '西区总收入'
    ->      , ROUND(SUM(IF(a.region = '东区', a.money, 0)) / SUM(a.east_area), 1)
    ->     AS '东区平均收入'
    ->      , ROUND(SUM(IF(a.region = '西区', a.money, 0)) / SUM(a.west_area), 1)
    ->     AS '西区平均收入'
    -> FROM (
    ->          SELECT `year`
    ->               , region
    ->               , money
    ->               , IF(region = '东区', 1, 0) AS east_area
    ->               , IF(region = '西区', 1, 0) AS west_area
    ->          FROM sale_volume
    ->          GROUP BY `year`
    ->                 , region
    ->                 , money
    ->      ) AS a
    -> GROUP BY a.`year`;
-- 第②种写法
mysql> SELECT a.year,
    ->        ROUND(a.收入, 1)   AS '东区总收入',
    ->        ROUND(b.收入, 1)   AS '西区总收入',
    ->        ROUND(a.平均收入, 1) AS '东区平均收入',
    ->        ROUND(b.平均收入, 1) AS '西区平均收入'
    -> FROM (SELECT year,
    ->              region,
    ->              SUM(money) AS '收入',
    ->              AVG(money) AS '平均收入'
    ->       FROM middle_sale_volume
    ->       GROUP BY year, region) a
    ->          INNER JOIN (SELECT year,
    ->                             region,
    ->                             SUM(money) AS '收入',
    ->                             AVG(money)    '平均收入'
    ->                      FROM middle_sale_volume
    ->                      GROUP BY year, region) b ON a.region < b.region AND a.year = b.year;

题目9: 信贷逾期情况统计

现有一张用户贷款情况表 middle_credit_overdue,middle_credit_overdue 表中的数据如下所示:

mysql> SELECT * FROM middle_credit_overdue;
-- user_id(用户ID):VARCHAR overdue_date(贷款逾期日期):DATE
+---------+--------------+
| user_id | overdue_date |
+---------+--------------+
| u001    | 2020-10-20   |
| u002    | 2020-11-03   |
| u003    | 2020-10-04   |
| u004    | 2021-01-05   |
| u005    | 2021-01-15   |
| u006    | 2020-09-04   |
| u007    | 2021-01-03   |
| u008    | 2020-12-24   |
| u009    | 2020-12-10   |
+---------+--------------+
9 rows in set (0.00 sec)

【题目9】统计日期截至2021年1月20日,不同逾期月份的逾期1-29天,逾期30-59天和逾期60天以上的样本个数。输出内容包括:overdue_month(逾期月份)、逾期1~29天,逾期30~59天,逾期60天以上,结果样例如下图所示:
在这里插入图片描述
【题目9】参考代码如下:

-- 第①种写法参考:
mysql> SELECT LEFT(overdue_date, 7),
    ->        SUM(CASE
    ->                WHEN TIMESTAMPDIFF(DAY, overdue_date, '2021-01-20') BETWEEN 1 AND 29 THEN 1
    ->                ELSE 0 END) AS '逾期1-29天',
    ->        SUM(CASE
    ->                WHEN TIMESTAMPDIFF(DAY, overdue_date, '2021-01-20') BETWEEN 30 AND 59 THEN 1
    ->                ELSE 0 END) AS '逾期30-59天',
    ->        SUM(CASE
    ->                WHEN TIMESTAMPDIFF(DAY, overdue_date, '2021-01-20') > 60 THEN 1
    ->                ELSE 0 END) AS '逾期60天以上'
    -> FROM middle_credit_overdue
    -> GROUP BY LEFT(overdue_date, 7)
    -> ORDER BY LEFT(overdue_date, 7)
    ->         DESC;
-- 第②种写法参考:
mysql> SELECT overdue_month
    ->      , COUNT(CASE
    ->                  WHEN overdue_days >= 1 AND overdue_days < 30
    ->                      THEN user_id END)
    ->     AS '逾期 1-29 天'
    ->      , COUNT(CASE
    ->                  WHEN overdue_days >= 30 AND overdue_days < 60
    ->                      THEN user_id END)
    ->     AS '逾期 30-59 天'
    ->      , COUNT(CASE
    ->                  WHEN overdue_days >= 60
    ->                      THEN user_id END)
    ->     AS '逾期 60 天以上'
    -> FROM (
    ->          SELECT user_id
    ->               , DATE_FORMAT(overdue_date, '%Y-%m') AS overdue_month
    ->               , DATEDIFF('2021-01-20', overdue_date)
    ->                                                    AS overdue_days
    ->          FROM middle_credit_overdue
    ->      ) a
    -> GROUP BY overdue_month
    -> ORDER BY overdue_month DESC;

至此今天的学习就到此结束了,笔者在这里声明,笔者写文章只是为了学习交流,以及让更多学习数据库的读者少走一些弯路,节省时间,并不用做其他用途,如有侵权,联系博主删除即可。感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!


在这里插入图片描述

    好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
    如果我的博客对你有帮助、如果你喜欢我的博客内容,请 点赞评论收藏 一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
 编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了 关注 我哦!

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

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

相关文章

BM64-最小花费爬楼梯

题目 给定一个整数数组 cost&#xff0c;其中 cost[i] 是从楼梯第i个台阶向上爬需要支付的费用&#xff0c;下标从0开始。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的…

【C++初阶】类和对象(下)

一.再谈构造函数 构造函数其实分为&#xff1a; 1.函数体赋值 2.初始化列表 之前所讲到的构造函数其实都是函数体赋值&#xff0c;那么本篇文章将会具体讲述初始化列表。 初始化列表 语法 以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个"…

学成在线笔记+踩坑(11)——认证授权介绍、网关认证,SpringSecurity+JWT+OAuth2

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题_java黑马笔记 目录 1 【认证模块】需求分析 1.1 什么是认证授权 1.2 业务流程 1.2.1 统一认证 1.2.2 SSO单点登录 1.2.3 第三方认证 2 Spr…

java面试笔记-01-集合面试题-介绍

好了,各位同学。下面我们开始新的篇章。就是Java集合相关的面试题。相信啊,说到集合呢,你肯定是比较熟悉的。在我们之前的课程中或者是学习中,大家用过哪些集合比较多呢?List,还有Map对吧? 虽然呢,你使用起来很熟悉,但是在面试的时候,面试官呢,可不会问一些使用的问…

算法修炼之练气篇——练气三层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 &#x1f353;&#x1f353;十进制数转化为十进制以下任意进制&#xff08;常用记忆一下&#xff09; #include<stdio.h> int main() {//输入10 2意思就是输入十进制10转化为2进制是多少。//输出1010int num…

Learn RabbitMQ with SpringBoot

文章目录 What is RabbitMQ?RabbitMQ Core conceptRabbitMQ ArchitectureInstall and setup RabbitMQ using DockerExplore RabbitMQ using management UICreate and setup Springboot3 project in intellijSpringboot and RabbitMQ Basic MessageConnection between Springbo…

【C++ 入坑指南】(03)Hello World

大概每个程序猿的第一个程序都是 Hello World , 这是梦开始的地方。本文是C 入坑指南的第三篇&#xff0c;让我们从最经典的 Hello World 开始。 看代码 #include <iostream>using namespace std;int main() {cout << "Hello, world!" << endl;r…

Linkage Mapper 构建区域生态系统地图的指南

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Linkage Mapper解密数字世界链接 文章目录 引言一、简介二、确定地图范围三、收集和整理空间数…

算法修炼之练气篇——练气一层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 题目1157: 亲和数 这道题很简单&#xff0c;我写的也很简单&#xff0c;看一眼就懂 题目描述 古希腊数学家毕达哥拉斯在自然数研究中发现&#xff0c;220的所有真约数(即不是自身的约数)之和为&#xff1a; 1245…

【MyBatis】 MyBatis 动态SQL使用及原理

文章目录 前言1. 动态SQL概述2. if标签3. choose、when和otherwise标签4. trim标签5. set标签和where标签6. foreach7. bind8. 动态SQL解析原理总结 前言 MyBatis 是一个优秀的持久层框架&#xff0c;它提供了丰富的 SQL 映射功能&#xff0c;可以让我们通过 XML 或注解方式来…

@SpringBootApplication深入剖析

如下图 SpringBootApplication是springboot项目启动类的注解&#xff0c;也是程序的入口,本文就是具体解析一下这个注解到底做了什么 一.SpringBootApplication的构成 1.这个注解是一个组合注解&#xff0c;他是有三个注解合成的&#xff0c;对应图中的123步&#xff0c;而这三…

新的勒索软件加密自身以逃避防病毒

一种名为 Cactus 的新型勒索软件一直在利用 VPN 设备中的漏洞对“大型商业实体”的网络进行初始访问。 Cactus 勒索软件行动至少从 3 月开始就一直活跃&#xff0c;并正在寻求受害者的大笔支出。 虽然新的威胁参与者采用了勒索软件攻击中常见的策略——文件加密和数据窃取——…

大数据Doris(十七):Random Distribution和复合分区使用场景

文章目录 Random Distribution和复合分区使用场景 一、Random Distribution 二、复合分区使用场景 Random Distribution和复合分区使用场景 一、Random Distribution 如果 OLAP 表没有更新类型的字段&#xff0c;将表的数据分桶模式设置为 RANDOM&#xff0c;则可以避免严…

架构设计之需求分析

大家好&#xff0c;我是易安。 设计架构的第一步是需求分析。那么&#xff0c;为什么要做需求分析&#xff1f;如何做好需求分析&#xff1f;今天我们一起聊一聊需求分析这件事儿 为什么要做需求分析 为何要做需求分析&#xff1f; 首先&#xff0c;当然是因为我们做软件本身就…

迭代器失效问题,以及解决方法。

迭代器的主要作用就是让算法能够不用关心底层数据结构&#xff0c;其底层实际就是一个指针&#xff0c;或者是对指针进行了封装&#xff0c;比如&#xff1a;vector的迭代器就是原生态指针T* 。因此迭代器失效&#xff0c;实际就是迭代器底层对应指针所指向的空间被销毁了&…

【小沐学Python】Python实现Web服务器(Flask+Vue+node.js,web单页增删改查)

文章目录 1、简介1.1 flask1.2 vue 2、开发2.1 新建flask项目2.2 安装flask库2.3 新建flask的主脚本2.4 新建Vue项目2.5 安装vue项目依赖项2.6 新增组件Ping.vue2.7 Ping.vue增加HTTP请求2.8 美化vue前端页面2.9 新增组件Books.vue2.10 flask增加路由Books2.11 Books.vue增加HT…

什么是ChatGPT?怎么用?

最近全网爆火的黑科技&#xff0c;叫做chatGPT。ChatGPT声称&#xff0c;它的AI对话模型能在大范围、细粒度问题上给出普遍准确的答案。简单地说&#xff0c;AI对话模型可以达到基本不犯错误的水平了。那么到底这个ChatGPT是什么&#xff1f;怎么用&#xff1f;本篇文章就来带大…

算法修炼之练气篇——练气二层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 题目 1084: 用筛法求之N内的素数 题目描述 用筛法求之N内的素数。 输入格式 N 输出格式 0&#xff5e;N的素数 样例输入 100 样例输出 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 …

学系统集成项目管理工程师(中项)系列21a_整体管理(上)

1. 含义 1.1. 包括为识别、定义、组合、统一和协调各项目管理过程组的各种过程和活动而开展的工作&#xff0c;是项目管理中一项综合性和全局性的管理工作 2. 项目经理是整合者 2.1. 【21上选33】 2.1.1. 【19上选37】 2.1.2. 【22上选33】 2.2. 通过与项目干系人主动、全…

shell脚本(磁盘空间、服务状态)

1、判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 第一步&#xff1a;创建脚本名为shell1.sh如下&#xff1a; vim shell1.sh 第二步&#xff1a;做计划在shell1文件中&#xff0c;命令…