### 第1天:SQL基础与交易所市场监控概述#### 上午课程1. **SQL简介** - SQL(结构化查询语言)的基本概念 - SQL的用途和优势 - SQL的常见操作:选择(SELECT)、插入(INSERT)、更新(UPDATE)、删除(DELE

摘要:适合岗位: Market Surveillance InternMarket Risk AnalystData AnalystQuant Intern 适合人群: 没有 SQL 基础有基础但不会写复杂查询想在简
适合岗位: Market Surveillance Intern / Market Risk Analyst / Data Analyst / Quant Intern 适合人群: 没有 SQL 基础 / 有基础但不会写复杂查询 / 想在简历写“熟练 SQL” 这套教程不是通用 SQL,而是 专为交易所风控与市场监察(MS)场景 设计,3 天 2~3 小时即可完成,学完即可: 手写复杂 SQL 独立写出 wash trading / spoofing / pump 查询 在面试现场 3 分钟写出完整检测逻辑 简历可写:“熟练使用 SQL 进行市场操纵行为检测” 🟦 Day 1:记住 6 大核心语法(2 小时顶一辈子) 大多数人学 SQL 最大的痛苦是:记不住。 但 Market Surveillance 的 SQL 永远只用这 6 个语法。 Market Surveillance 永远用这 6 个关键词 语法 用途 用在哪些风控逻辑里? SELECT 取哪些列 交易次数、成交量、涨幅 FROM 从哪张表 trades / orders / positions WHERE 过滤行 按 symbol、时间、用户过滤 GROUP BY 分组统计 按 user_id、symbol 等汇总行为 HAVING 过滤分组后的结果 “交易 ≥ 20 次的用户”“净成交量 ≤ 10” ORDER BY 排序 按可疑程度排序 LIMIT 只看前几名 Top 10 可疑账户 额外再记 4 个聚合函数(统计函数): COUNT(*) → 统计行数(交易次数) SUM(列) → 求和(成交量) AVG(列) → 平均值(平均价格) MAX(列)/MIN(列) → 最大/最小 背口诀(以后所有查询都按这个顺序写) “先 FROM 哪张表 → WHERE 过滤行 → GROUP BY 分组 → HAVING 过滤组 → SELECT 要什么 → ORDER BY 排序 → LIMIT 取几个” 看例子(交易所风控最常见的结构): SELECT user_id, COUNT(*) AS trade_count FROM trades WHERE symbol = 'BTCUSDT' GROUP BY user_id HAVING COUNT(*) >= 100 ORDER BY trade_count DESC LIMIT 10; 含义:找出交易 BTCUSDT 超过 100 次的用户,排序后取前 10 名。 📝 Day 1 作业(30 分钟) 把上面的查询改成: 改成 DOGEUSDT 改成今天的数据(WHERE trade_time >= '2025-11-27') 改成交易次数 ≥ 50 次 自己敲 5 遍,直到不看也能写出来。 自己敲 5 遍 做到不看答案也能写。 🟩 Day 2:学会 4 个精华语法 = 能写 90% 的复杂查询 今天你将掌握 Market Surveillance 用得最多的 4 项技能。 ① AS 重命名(让内容可读) COUNT(*) AS trade_count -- 原来叫 COUNT(*),现在叫 trade_count ② CASE WHEN 条件判断(超关键) -- 把 BUY 变成 +volume,SELL 变成 -volume SUM(CASE WHEN side='BUY' THEN volume WHEN side='SELL' THEN -volume ELSE 0 END) AS net_volume 这是 所有“净成交量、净方向、净资金流”类风控逻辑的核心语句。 ③ 时间处理(交易所有大量按小时/天过滤) WHERE trade_time >= '2025-11-27' -- 某一天 WHERE trade_time >= NOW() - INTERVAL '1 day' -- 最近 1 天 WHERE DATE(trade_time) = '2025-11-27' -- 按自然日 ④ WITH CTE(写复杂风控查询的神器) WITH today_trades AS ( SELECT * FROM trades WHERE DATE(trade_time) = '2025-11-27' ) SELECT user_id, COUNT(*) FROM today_trades GROUP BY user_id; 📝 Day 2 终极作业(40 分钟) 写出下面这个检测 wash trading 的 SQL: “找出今天 DOGEUSDT 上,净成交量 ≈ 0(≤ 50),且交易次数 ≥ 30 的用户” 答案(自己写完再看): SELECT user_id, COUNT(*) AS trade_count, ABS(SUM(CASE WHEN side = 'BUY' THEN volume WHEN side = 'SELL' THEN -volume ELSE 0 END)) AS net_volume FROM trades WHERE symbol = 'DOGEUSDT' AND DATE(trade_time) = '2025-11-27' GROUP BY user_id HAVING COUNT(*) >= 30 AND ABS(SUM(CASE WHEN side = 'BUY' THEN volume WHEN side = 'SELL' THEN -volume ELSE 0 END)) <= 50 ORDER BY trade_count DESC; 这就是 wash trading 检测基础版。 🟥 Day 3:交易所真实面试题(手把手拆解) 今天直接实战 3 个 Market Surveillance 经典题型,现在就把前面给你的 3 个复杂查询拆成最简单的话,一句一句教你写。 ✔ 真题 1:Wash Trading 检测(最常见) SELECT user_id, symbol, COUNT(*) AS trade_count, -- 交易次数 MIN(price) AS min_price, -- 最低价 MAX(price) AS max_price, -- 最高价 ABS(SUM(CASE WHEN side='BUY' THEN volume ELSE -volume END)) AS net_volume -- 净成交量 FROM trades WHERE trade_time >= '2025-11-27' GROUP BY user_id, symbol HAVING COUNT(*) >= 20 AND (MAX(price) - MIN(price)) <= MIN(price) * 0.001 -- 价格波动 ≤0.1% AND ABS(SUM(CASE WHEN side='BUY' THEN volume ELSE -volume END)) <= 10 LIMIT 20; 🎯 逻辑解释(你在面试要能说出来) 交易很多次 但价格几乎不动(横盘) 买卖量互相抵消(净成交量≈0) → 典型洗量(制造虚假活跃)。 ✔ 真题 2:Spoofing(大量下单→撤单) SELECT user_id, COUNT(*) FILTER (WHERE status = 'CANCELED') AS cancel_count, -- 撤单次数 AVG(quantity) FILTER (WHERE status = 'CANCELED') AS avg_cancel_qty -- 平均撤单量 FROM orders WHERE created_at >= NOW() - INTERVAL '1 hour' GROUP BY user_id HAVING cancel_count >= 50 ORDER BY cancel_count DESC LIMIT 10; 🎯 逻辑解释 1 小时内撤单 ≥ 50 次 说明可能反复挂单→撤单扰动价格(spoofing 行为) ✔ 真题 3:Pump & Dump 快速监测 SELECT symbol, MAX(price)/MIN(price) - 1 AS max_rise FROM trades WHERE trade_time >= NOW() - INTERVAL '4 hours' GROUP BY symbol HAVING max_rise >= 0.5 -- 4小时内涨幅 ≥50% ORDER BY max_rise DESC -- 最大涨幅 LIMIT 10; 🎯 逻辑解释 在短期内暴涨 ≥ 50% 是 pump & dump 的潜在目标 3 天完整学习任务表 Day 1(今天): 背会 6 个基本语法 + 4 个聚合函数 敲 10 遍最基础的“统计每个用户交易次数”查询 完成 Day1 作业(改 3 次) Day 2(明天): 学会 CASE WHEN 和时间处理 独立写出“净成交量几乎为 0”的查询 敲 5 遍 Day 3(后天): 跟着我一句一句敲完上面 3 个真题 自己遮住再手写一遍 把 3 个查询背下来,随时能 3 分钟写完 完成后,你即可在简历写: 熟练使用 SQL 进行 wash trading、spoofing、pump&dump 等市场操纵行为检测,能够独立编写复杂多条件查询。 现在开始实操 打开在线数据库练习网站: 👉 https://www.db-fiddle.com/ 输入: SELECT 'hello world' AS message; 看到结果后,继续做 Day 1 的第一个练习。 关注我,一起web3求职:http://vlink.cc/tosky