SqlServer取每组中的TOP(n)方法实验

测试数据如下:在这里插入图片描述
– 方法一,此方法速度最快
SELECT *
FROM ( SELECT DENSE_RANK() OVER(PARTITION BY a ORDER BY b DESC) AS RNK,
a,
b
FROM [dbo].[t]
) zz
WHERE RNK<3

– 方法二
SELECT *
FROM [dbo].[t] t1
WHERE b
IN (SELECT DISTINCT TOP(2) b FROM [dbo].[t] t2 WHERE t1.a= t2.a ORDER BY b DESC)

– 方法三
SELECT *
FROM (SELECT DISTINCT a FROM [dbo].[t]) t1
INNER JOIN [dbo].[t] t2
ON t2.b IN (SELECT DISTINCT TOP(2) b FROM [dbo].[t] t3 WHERE t3.a= t1.a ORDER BY b DESC) AND t2.a=t1.a

– 方法四
SELECT t1.a,zz.b
FROM [dbo].[t] t1
CROSS APPLY (SELECT DISTINCT TOP(2) b FROM [dbo].[t] t2 WHERE t1.a=t2.a ORDER BY b DESC) zz
WHERE t1.b=zz.b

在这里插入图片描述

<think>好的,用户之前已经询问过一年的详细学习计划,现在他需要针对第1-2月的计划制定更详细的版本。我需要先回顾之前的回答,确保这次的内容是更细致的展开。 用户可能已经按照之前的计划开始学习,但需要更具体的每日或每周安排,以及更详细的任务分解。他可能希望知道每天要学什么,如何分配时间,具体的学习资源和练习项目是什么。同时,他可能担心自己能否坚持,或者需要一些方法来跟踪进度。 我需要把第1-2月的内容拆解得更细,比如分周安排任务,明确每天的学习目标,推荐具体的学习资料,以及提供检查点来评估进展。此外,用户可能对某些工具或技术不熟悉,需要给出入门指南或示例,比如Shell脚本的具体例子,Python项目的步骤。 还要考虑用户的学习曲线,从基础开始逐步深入,确保每个任务都有明确的产出,比如GitHub提交的脚本或博客文章。同时,提醒用户记录学习日志,帮助复盘和调整计划。可能还需要加入一些时间管理的建议,比如每日时间分配,避免过度劳累。 最后,检查是否有遗漏的部分,比如是否需要推荐书籍或在线课程,是否需要强调某些重点难点,或者给出常见问题的解决方法。确保整个计划实用、可行,并且能够帮助用户有效掌握Linux、Python和网络基础知识。</think>以下是针对**第1-2月(基础技能强化)**的**超详细学习计划**,精确到每周任务、每日学习清单和实操案例,适合零基础快速上手: --- ### **学习目标** 1. 熟练使用Linux基础命令和Shell脚本编写 2. 掌握Python核心语法及运维常用库(Pandas/Flask) 3. 理解Docker容器化部署流程 4. 输出可复用的脚本工具库 --- ### **分周计划** #### **第1周:Linux核心操作** **重点**:文件系统/权限管理/进程监控 - **每日任务**: - **Day1-2**: - 掌握20个高频命令: ```bash # 文件操作:find、grep、rsync find /var/log -name "*.log" -mtime +7 -delete # 清理7天前日志 grep "500" access.log | awk '{print $7}' | sort | uniq -c # 统计500错误的URL # 资源监控:top/htop、free、iostat watch -n 1 'df -h | grep /dev/sda1' # 实时监控磁盘分区使用率 ``` - 实验:用`cron`设置定时任务(每天凌晨压缩日志) - **Day3-4**: - 用户与权限实战: ```bash groupadd devops && useradd -G devops alice # 创建组和用户 chmod 755 /opt/scripts && chown alice:devops /opt/scripts # 设置目录权限 ``` - 实验:用`systemd`管理Nginx服务(启动/重启/查看状态) - **Day5-7**: - 网络配置: ```bash ip addr show eth0 # 查看网卡信息 nc -zv 192.168.1.10 80 # 检测端口连通性 tcpdump -i eth0 port 22 -w ssh.pcap # 抓SSH流量 ``` - 实验:用`ufw`配置防火墙规则(仅允许22/80/443端口) --- #### **第2周:Shell脚本自动化** **重点**:脚本调试/日志处理/任务调度 - **每日任务**: - **Day1-2**: - 编写第一个Shell脚本: ```bash #!/bin/bash # 自动备份MySQL数据库并删除7天前的旧备份 mysqldump -u root -p$DB_PASS wordpress > /backup/$(date +%F).sql find /backup -name "*.sql" -mtime +7 -exec rm {} \; ``` - 实验:添加`set -e`和`set -x`调试脚本 - **Day3-4**: - 日志分析实战: ```bash # 统计Nginx日志中每分钟请求量Top10的IP awk '{print $1}' access.log | cut -d: -f2 | sort | uniq -c | sort -nr | head -n10 ``` - 实验:用`sed`批量替换配置文件的端口号(如将8080改为8000) - **Day5-7**: - 定时任务进阶: ```bash # 每小时检查磁盘使用率,超过90%时发邮件告警 df -h | awk '$5+0 > 90 {print $6 " is full!"}' | mail -s "Disk Alert" admin@example.com ``` - 实验:用`logger`将脚本输出写入syslog --- #### **第3周:Python运维编程** **重点**:文件处理/API开发/数据分析 - **每日任务**: - **Day1-2**:Python基础速成: - 用`os`和`shutil`模块遍历目录并清理临时文件: ```python import os for root, dirs, files in os.walk('/tmp'): for file in files: if file.endswith('.tmp'): os.remove(os.path.join(root, file)) ``` - **Day3-4**:Pandas数据分析: - 解析服务器性能CSV并输出报告: ```python import pandas as pd df = pd.read_csv('server_metrics.csv') print(df[df['cpu_usage'] > 80].groupby('hostname').size()) ``` - **Day5-7**:Flask API开发: - 创建接收告警的API端点: ```python from flask import Flask, request app = Flask(__name__) @app.route('/alert', methods=['POST']) def alert(): data = request.json print(f"收到告警:{data['message']}") return 'OK' if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) ``` --- #### **第4周:Docker实战与整合** **重点**:镜像构建/容器网络/服务编排 - **每日任务**: - **Day1-2**:Docker基础操作: - 部署一个WordPress容器栈: ```bash docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=pass mysql:5.7 docker run -d --name wordpress --link mysql -p 8080:80 wordpress ``` - **Day3-4**:自定义镜像: - 构建带Python环境的镜像: ```Dockerfile FROM alpine:3.12 RUN apk add --no-cache python3 py3-pip && pip3 install flask COPY app.py /app.py CMD ["python3", "/app.py"] ``` - **Day5-7**:Docker网络与存储: - 实验:创建自定义网络并配置容器间通信: ```bash docker network create devops-net docker run -d --net devops-net --name redis redis:alpine docker run -it --net devops-net alpine ping redis ``` --- ### **每日学习时间表** | 时间段 | 内容 | 示例任务 | |--------------|------------------------------|-----------------------------------| | **07:00-08:00** | Linux命令练习 | 用`find`清理日志文件 | | **12:30-13:30** | Python编码 | 完善Flask告警API的错误处理 | | **19:00-20:30** | 综合实验 | 部署Docker容器并编写部署文档 | | **周末** | 复盘与输出 | 撰写技术博客/GitHub提交代码 | --- ### **学习资源推荐** 1. **Linux**: - 书籍:《Linux命令行与Shell脚本编程大全》 - 实验:[Linux Journey](https://linuxjourney.com/)(免费交互式教程) 2. **Python**: - 视频:[Corey Schafer的Python教程](https://www.youtube.com/c/Coreyms)(重点看Pandas部分) - 代码库:[Real Python](https://realpython.com/)(搜索“Flask API”案例) 3. **Docker**: - 官方文档:[Docker Get Started](https://docs.docker.com/get-started/) - 实战平台:[Play with Docker](https://labs.play-with-docker.com/) --- ### **学习检查点** - **每周五晚**:自我测试(例如:不查文档写出一个日志切割脚本) - **每周末**:提交GitHub代码+更新学习日志(记录遇到的坑和解决方法) - **第2个月底**: 1. 完成一个综合项目: - 用Shell脚本监控服务器状态 → 调用Python生成报告 → 通过Docker部署 2. 产出物: - GitHub仓库:包含至少10个实用脚本 - 博客文章:《从零到一的Linux运维入门指南》 --- ### **避坑提醒** 1. **不要死记命令**:用`tldr`工具快速查看常用命令示例(比man更友好) ```bash # 安装后快速查询 tldr tar # 显示tar命令的常用场景 ``` 2. **优先解决报错**:遇到Python异常时,先阅读完整的Traceback信息(重点关注最后一行) 3. **容器安全**:避免在Dfile中使用`latest`标签,始终指定版本号(如`python:3.9-slim`) 通过这个计划,2个月内你将具备**独立编写运维自动化脚本**和**部署基础服务**的能力。关键点:**每天至少写30行代码**,坚持在[LeetCode](https://leetcode.com/)或[Exercism](https://exercism.org/)做Python练习题保持手感!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值