sql.moscow查询 · 报表 · 迁移
sql.moscow / 开发与优化PostgreSQL · Greenplum · Oracle

复杂的 SQL。
清晰的结果。

协助处理 SQL 查询、错误、报表、数据导出、PostgreSQL、Greenplum、Oracle PL/SQL,以及不同数据库管理系统之间的 SQL 逻辑迁移。

query.sql查询示例
SELECT department,
       COUNT(*) AS total
FROM requests
WHERE created_at >=
      CURRENT_DATE - INTERVAL '30 days'
GROUP BY department;
示意性示例 · 不含真实数据
工作开始之前

从任务说明和可复现的示例开始。

请提供查询、错误信息、数据库管理系统版本和去标识化示例。无需提供密码、访问密钥或真实个人数据。

如何提交任务 ↗
服务

可以委托哪些工作

服务

SQL 查询修复

处理语法、类型、JOIN、GROUP BY、CTE、窗口函数错误,以及重复行、错误合计与空结果。

5 000 ₽起
服务

查询优化

分析慢查询,改写 JOIN 和子查询,并就索引和执行计划提出建议。

15 000 ₽起
服务

PostgreSQL / Greenplum

PL/pgSQL、函数、临时表、分析查询、Greenplum 特性,以及类型和结果结构错误。

15 000 ₽起
服务

Oracle PL/SQL → PostgreSQL

迁移 SQL 逻辑、函数和过程:DECODE、NVL、日期、MERGE、游标、包、PL/pgSQL。

25 000 ₽起
服务

报表与数据导出

面向 Excel、BI、CRM、ERP,以及销售、库存、客户、付款、单据与数据核对的 SQL 查询。

10 000 ₽起
服务

SQL 代码审查

分析他人编写的 SQL,查找错误、简化逻辑、添加注释、编写文档并改写查询。

20 000 ₽起
SQL 错误

查询修复与错误分析

您可以提供查询文本、错误信息、表结构说明和预期结果。并非总是需要数据库访问权限。

  • relation does not exist
    检查模式、表名、大小写、search_path 和执行上下文。
  • column does not exist
    检查别名、JOIN、CTE、嵌套查询和作用域。
  • structure of query does not match
    修正 PostgreSQL 函数的返回类型和列顺序。
  • syntax error at or near
    查找语法错误、数据库管理系统兼容性问题和不正确的语句结构。
  • 重复数据与错误合计
    检查 JOIN、分组、聚合和数据粒度。
  • 慢查询
    分析逻辑、多余子查询、筛选条件、索引和执行计划。
迁移

Oracle PL/SQL → PostgreSQL / Greenplum

迁移 SQL 逻辑需要适配函数、类型、日期、过程逻辑和数据库管理系统的行为,而非机械替换词语。

Oracle 中的常见用法

  • DECODE
  • NVL
  • MERGE
  • CONNECT BY
  • PL/SQL 包
  • 游标逻辑

适配

  • CASE
  • COALESCE
  • INSERT ON CONFLICT / 单独实现逻辑
  • WITH RECURSIVE
  • PL/pgSQL 函数
  • 基于集合的方法(set-based)
Greenplum: 迁移时应考虑数据分布、UPDATE/DELETE 限制、临时表、函数以及 MPP 架构的特点。
报表

面向分析与业务的 SQL 数据导出

编写查询,导出有关销售、客户、库存、付款、单据、商品、分组、期间和状态的数据。

  • Excel / CSV
    按所需导出结构编写查询。
  • Power BI / BI
    准备数据集和分析数据集市。
  • CRM / ERP
    按客户、单据、交易和付款查询数据。
  • 数据核对
    查找重复、差异、缺失和聚合错误。
费用

SQL 任务费用

任务初步分析3 000 ₽起
简单 SQL 查询修复5 000 ₽起
SQL 数据导出开发10 000 ₽起
慢查询优化15 000 ₽起
PL/pgSQL 函数20 000 ₽起
Oracle PL/SQL → PostgreSQL 迁移25 000 ₽起
SQL 代码审查20 000 ₽起
紧急任务单独议定

最终费用取决于数据库管理系统、代码量、表结构是否可提供、紧急程度、测试需求以及业务逻辑的复杂程度。

工作如何开展

工作流程

1. 您提交任务

提供查询、错误信息、数据库管理系统、表结构、预期结果和限制条件。

2. 澄清逻辑

明确需要哪些数据、结果如何计算,以及错误或运行缓慢出现在哪里。

3. 准备解决方案

提供修正后的 SQL、说明和建议,并在必要时提供优化方案。

FAQ

常见问题

没有数据库访问权限也能提供帮助吗?

可以。初步分析通常只需查询文本、错误信息、表结构和预期结果。优化时最好提供执行计划和数据量示例。

可以将 Oracle SQL 改写为适用于 PostgreSQL 的查询吗?

可以。需要考虑函数、数据类型、日期、过程逻辑和语法的差异。有时需要改变实现方法,而非直接替换。

可以加快查询速度吗?

可以,需提供查询文本、表结构和数据量示例,最好还有 EXPLAIN / EXPLAIN ANALYZE。也可以就索引和逻辑改写提出建议。

可以为 Excel 或 BI 导出数据吗?

可以。可根据所需字段、筛选条件、分组、期间和结果格式编写 SQL 查询。

如何验证修正后的查询并比较性能

修改 SQL 前,宜明确怎样的结果才算正确:列的组成、筛选规则、数据粒度、允许的重复以及合计的计算方式。验证示例包括一个小型表结构、去标识化记录和预期结果。这组材料有助于区分语法错误和对报表需求的理解偏差。

优化验证分为两部分。首先比较原查询和修改后查询的结果:行数、键、指标的校验合计以及有疑问的示例。然后在约定的数据量上比较测量结果。即使响应很快,若遗漏了数据行,也不能算有用的优化结果。

  • 注明数据库管理系统版本、查询参数和典型表数据量。
  • 保存执行计划、测量条件和并发负载信息。
  • 如需修改索引,应说明建议执行的命令及相关限制。
  • 最终说明中,分别交代修正后的逻辑、取得的效果和仍存在的瓶颈。

在 PostgreSQL 中,EXPLAIN ANALYZE 模式会实际执行被分析的查询。因此,将其用于修改数据的操作或高负载查询前,应事先协商;最好使用准备好的测试副本。不含实际运行数据的执行计划有助于初步分析,但不能替代在实际工作场景中验证结果。

在数据库管理系统之间迁移 SQL 逻辑时应核对什么

迁移报表或过程时,应依据其在约定数据上的行为进行评估。除了能否成功运行,还应检查缺失值处理、类型转换、舍入、日期和时间边界的规则。即使查询外观相似,连接条件或筛选条件的细微变化也可能改变最终合计。

迁移验证材料

  1. 原始 SQL 或过程代码,并说明参数和预期结果。
  2. 所用表的结构、列类型、约束以及对其他函数的依赖。
  3. 常规数据和边界数据示例:记录缺失、重复、空值、日期切换、负金额或零金额。
  4. 原系统处理这些示例的结果,以及重要业务规则的说明。
  5. 执行条件:运行频率、数据量、允许耗时和访问限制。

如果过程会修改数据,应单独审查操作顺序、错误处理以及运行未完成时表的状态。对于报表查询,应检查数据粒度是否一致:结果是按单据、单据行还是对象分组生成。改写查询时,不能在未说明的情况下替换这些粒度。

迁移完成后,宜保存 SQL 脚本、变更清单和验证结果。对未解决的依赖应明确标注,例如未提供被调用的函数,或某字段的填充规则未知。这样的清单有助于从具体问题继续工作,并商定后续验证,而无需传递多余的生产数据或访问权限。

申请

提交 SQL 任务进行分析

请附上查询文本、错误信息、表结构、数据库管理系统和预期结果。可以先根据代码与说明开展工作,无需数据库访问权限。

  • 修复 SQL 查询;
  • 优化运行缓慢的报表;
  • 迁移 Oracle PL/SQL;
  • 为 Excel、BI、CRM 或 ERP 导出数据。
SQL、PostgreSQL、Greenplum、Oracle PL/SQL、报表与数据导出request@sql.moscow
写信联系讨论任务 ↗