SQLクエリの計算のために列エイリアスを直接使用するための制限
特定のSQLクエリで、式 avg_time
and で列エイリアスを使用しようとしています。
根本原因は、
select
Select ステートメント全体を同時に処理するため、エイリアス値はその時点で認識できません。
ソリューション:ネストされたサブQueriesを使用
] この問題を解決するために、サブ征服を使用してクエリをカプセル化することができ、それにより効果的に中間データセットを作成できます。このサブクエリでは、必要な列エイリアス avg_time
および cnt を作成できます。
Select stddev_time、max_time、avg_time、min_time、cnt、round(avg_time * cnt、2)select as slowdown
から (
選択します
coalesce(round(stddev_samp(time)、2)、0)stddev_time、
max_timeとしてのmax(time)、
round(avg(time)、2)avg_time、
min_timeとしてのmin(time)、
cnt(path)as cnt、
パス
から
ロードタイム
グループ
パス
注文
AVG_TIME DESC
制限10
)x;
SELECT stddev_time, max_time, avg_time, min_time, cnt, ROUND(avg_time * cnt, 2) as slowdown
FROM (
SELECT
COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time,
MAX(time) as max_time,
ROUND(AVG(time), 2) as avg_time,
MIN(time) as min_time,
COUNT(path) as cnt,
path
FROM
loadtime
GROUP BY
path
ORDER BY
avg_time DESC
LIMIT 10
) X;
ステートメントは、これらのエイリアスを正常に参照できます。 免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3