sql.moscowクエリ · レポート · 移行
sql.moscow / 開発と最適化PostgreSQL · Greenplum · Oracle

複雑なSQL。
わかりやすい成果。

SQLクエリ、エラー、レポート、データ出力、PostgreSQL、Greenplum、Oracle PL/SQL、DBMS間のSQLロジックの移行を支援します。

query.sqlクエリの例
SELECT department,
       COUNT(*) AS total
FROM requests
WHERE created_at >=
      CURRENT_DATE - INTERVAL '30 days'
GROUP BY department;
説明用の例 · 実データは使用していません
着手前に

課題の内容と再現可能な例から始めます。

クエリ、エラーメッセージ、DBMSのバージョン、匿名化した例をお送りください。パスワード、アクセスキー、実際の個人データは不要です。

課題を送る方法 ↗
サービス

依頼できること

サービス

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
    構文エラー、DBMS間の非互換性、不適切な構文の発見。
  • 重複と誤った合計
    JOIN、グループ化、集計、データの粒度の確認。
  • 遅いクエリ
    ロジック、不要なサブクエリ、フィルター、インデックス、実行計画の分析。
移行

Oracle PL/SQL → PostgreSQL / Greenplum

SQLロジックの移行では、単語の機械的な置き換えではなく、関数、型、日付、手続きロジック、DBMSの動作に合わせた調整が必要です。

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 ₽から
急ぎの課題個別に決定

最終的な料金は、DBMS、コードの量、テーブルスキーマの入手可否、緊急度、テストの必要性、業務ロジックの複雑さによって異なります。

業務の流れ

作業の手順

1. 課題をお送りいただく

クエリ、エラー、DBMS、テーブル構造、期待する結果、制約。

2. ロジックを確認する

必要なデータ、結果の計算方法、エラーや遅延が発生する箇所を確認します。

3. 解決策を作成する

修正したSQL、説明、推奨事項、必要に応じた最適化案。

FAQ

よくあるご質問

データベースへのアクセスなしでも支援できますか?

はい。予備的な解析には、クエリの本文、エラー、テーブル構造、期待する結果があれば十分なことが多いです。最適化には、実行計画とデータ量の例があることが望ましいです。

Oracle SQLをPostgreSQL向けに書き換えられますか?

はい。関数、データ型、日付、手続きロジック、構文の違いを考慮する必要があります。直接の置き換えではなく、アプローチの変更が必要になる場合もあります。

クエリを高速化できますか?

はい。クエリの本文、テーブル構造、データ量の例が必要で、EXPLAIN / EXPLAIN ANALYZEがあることが望ましいです。インデックスやロジックの書き換えについても提案できます。

ExcelやBI向けのデータ出力を作成できますか?

はい。必要なフィールド、フィルター、グループ化、期間、結果の形式に合わせたSQLクエリを作成できます。

修正したクエリを検証し、性能を比較する方法

SQLを変更する前に、正しい結果の基準を記録しておくと役立ちます。対象は、列の構成、抽出ルール、データの粒度、許容される重複、合計の計算方法です。検証用の例には、小規模なスキーマ、匿名化したレコード、期待する結果を含めます。この一式があれば、構文エラーと、レポートの解釈の誤りを切り分けやすくなります。

最適化の検証は二つの部分から成ります。まず、元のクエリと変更後のクエリの結果について、行数、キー、指標の照合用合計値、判断の難しい例を比較します。次に、合意したデータ量での測定結果を比較します。行が欠落している速い応答は、有用な最適化の成果とは認められません。

  • DBMSのバージョン、クエリのパラメーター、代表的なテーブルのデータ量を記載します。
  • 実行計画、測定条件、同時に発生していた負荷に関する情報を保存します。
  • インデックスを変更する場合は、提案するコマンドと関連する制約を説明します。
  • 最終的な説明では、修正したロジック、得られた効果、残っているボトルネックを分けて記載します。

PostgreSQLのEXPLAIN ANALYZEモードは、調査対象のクエリを実際に実行します。このため、データを変更する操作や負荷の大きいデータ抽出に使用する際は、事前に合意します。準備したテスト用コピーの使用が望ましいです。実測データを伴わない実行計画だけでも初期分析には役立ちますが、実際の業務シナリオで得られる結果の検証の代わりにはなりません。

DBMS間でSQLロジックを移行する際に照合すること

レポートやプロシージャの移行は、合意したデータに対する動作で評価します。正常に実行できることに加え、欠損値、型変換、丸め、日付、時間の境界の処理ルールを確認します。見た目が似たクエリでも、結合条件やフィルターのわずかな変更によって最終的な合計値が変わることがあります。

移行のための検証用資料一式

  1. パラメーターと期待する結果の説明を添えた、元のSQLまたはプロシージャのコード。
  2. 使用するテーブルの構造、列の型、制約、他の関数への依存関係。
  3. 通常のデータと境界条件のデータの例:レコードの欠落、重複、空の値、日付の切り替わり、負またはゼロの金額。
  4. これらの例に対する元のシステムの結果と、重要な業務ルールの説明。
  5. 実行条件:頻度、データ量、許容時間、アクセス制限。

プロシージャがデータを変更する場合は、操作の順序、エラー処理、実行が完了しなかった後のテーブルの状態を別途検討します。レポート用のデータ抽出では、文書単位、文書の明細行単位、対象グループ単位など、結果の粒度が同じであることを確認します。クエリを書き換える際に、これらのレベルを気付かれないまま入れ替えてはいけません。

移行後は、SQLスクリプト、変更点の一覧、検証結果を保存しておくと役立ちます。未解決の依存関係は明記します。例えば、呼び出す関数が提供されていない場合や、フィールドの入力ルールが不明な場合です。この一覧があれば、具体的な疑問点から作業を再開でき、不要な業務データやアクセス権を渡すことなく、今後の検証について合意できます。

お申し込み

SQLの課題を解析のためにお送りください

クエリの本文、エラー、テーブル構造、DBMS、期待する結果を添付してください。データベースへのアクセスがなくても、コードと説明から始められます。

  • SQLクエリの修正;
  • 遅いレポートの最適化;
  • Oracle PL/SQLの移行;
  • Excel、BI、CRM、ERP向けのデータ出力。
SQL、PostgreSQL、Greenplum、Oracle PL/SQL、レポートとデータ出力request@sql.moscow
メールする課題について相談 ↗