Reference

SQL スニペット

これらの SQL スニペットを Dory の開始点として使用します。テーブル名、タイムスタンプ列、データベース固有の日付関数を実行する前に調整します。

安全なプレビュー

必要以上の行をスキャンせずにテーブルをプレビューします。

SELECT *
FROM your_table
LIMIT 100;

幅の広いテーブルの場合は、必要な列のみを検査します。

SELECT id, created_at, status
FROM your_table
ORDER BY created_at DESC
LIMIT 100;

行を数える

SELECT COUNT(*) AS row_count
FROM your_table;

テーブルのサイズを理解するために、より深い分析の前にこれを使用してください。

上位 N の値

SELECT status, COUNT(*) AS records
FROM your_table
GROUP BY status
ORDER BY records DESC
LIMIT 20;

ステータス フィールド、カテゴリ、国、イベント名、計画、エラー コードに適しています。

最近の記録

SELECT *
FROM your_table
WHERE created_at >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY created_at DESC
LIMIT 200;

日付の計算はデータベースによって異なります。データベースがこの正確な表現をサポートしていない場合は、Dory AI に PostgreSQL、MySQL、ClickHouse、SQLite、DuckDB、または MariaDB 用に変換するよう依頼してください。

毎日のトレンド

PostgreSQL、DuckDB、および多くの互換性のあるエンジン:

SELECT
  DATE_TRUNC('day', created_at) AS day,
  COUNT(*) AS records
FROM your_table
WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY day
ORDER BY day;

クリックハウス:

SELECT
  toStartOfDay(created_at) AS day,
  count() AS records
FROM your_table
WHERE created_at >= now() - INTERVAL 30 DAY
GROUP BY day
ORDER BY day;

MySQL と MariaDB:

SELECT
  DATE(created_at) AS day,
  COUNT(*) AS records
FROM your_table
WHERE created_at >= CURRENT_DATE - INTERVAL 30 DAY
GROUP BY day
ORDER BY day;

ヌルチェック

SELECT
  COUNT(*) AS total_rows,
  SUM(CASE WHEN email IS NULL THEN 1 ELSE 0 END) AS missing_email,
  SUM(CASE WHEN created_at IS NULL THEN 1 ELSE 0 END) AS missing_created_at
FROM users;

結合、時間フィルター、またはグラフのグループ化のために列に依存する前に、これを使用してください。

重複キーのチェック

SELECT id, COUNT(*) AS duplicates
FROM your_table
GROUP BY id
HAVING COUNT(*) > 1
ORDER BY duplicates DESC
LIMIT 100;

これは、自然キーによって一意である必要がある主キーの仮定、インポートされたデータ、およびイベント テーブルに使用します。

結合テンプレート

SELECT
  o.id AS order_id,
  o.created_at,
  o.total_amount,
  u.id AS user_id,
  u.email
FROM orders o
JOIN users u ON u.id = o.user_id
WHERE o.created_at >= CURRENT_DATE - INTERVAL '30 days'
ORDER BY o.created_at DESC
LIMIT 200;

収益、使用量、または顧客数のために結合を使用する前に、必ず結合カーディナリティを確認してください。

結合カーディナリティ チェック

SELECT
  COUNT(*) AS joined_rows,
  COUNT(DISTINCT o.id) AS distinct_orders,
  COUNT(DISTINCT u.id) AS distinct_users
FROM orders o
JOIN users u ON u.id = o.user_id
WHERE o.created_at >= CURRENT_DATE - INTERVAL '30 days';

joined_rowsが予想される個別の数よりもはるかに大きい場合は、重複キーまたは多対多の結合を調べてください。

コンバージョンファネル

SELECT
  COUNT(DISTINCT CASE WHEN event_name = 'viewed_page' THEN user_id END) AS viewed_page,
  COUNT(DISTINCT CASE WHEN event_name = 'started_checkout' THEN user_id END) AS started_checkout,
  COUNT(DISTINCT CASE WHEN event_name = 'completed_purchase' THEN user_id END) AS completed_purchase
FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL '30 days';

製品分析スキーマに一致するようにイベント名と ID 列を調整します。

エラー調査

SELECT
  error_code,
  COUNT(*) AS occurrences,
  MAX(created_at) AS last_seen
FROM application_logs
WHERE level = 'error'
  AND created_at >= CURRENT_DATE - INTERVAL '24 hours'
GROUP BY error_code
ORDER BY occurrences DESC
LIMIT 20;

これをログ、ジョブ実行、同期操作、取り込みテーブルで使用します。

遅いクエリのサンプル

SELECT
  query_id,
  user_name,
  duration_ms,
  created_at,
  query_text
FROM query_log
WHERE duration_ms > 5000
ORDER BY duration_ms DESC
LIMIT 50;

カラム名はデータベースや監視テーブルによって異なります。 Dory Schema Explorer または AI Chat を使用して、このパターンを適応させます。

このガイドは役に立ちましたか?