次の関係を持つ属性に対してこのクエリを作成しています。ネストされたクエリで「グループ化」を2回回避する方法
State->City->Customer->Service Order.
すべて1対多数。サブクエリはsvc_ord_nbr
でグループ化して集計しますが、外側のクエリは別の集約を実行します。
select state, city, cust_name,
count(distinct (case when start_date <> end_date then svc_ord_nbr end)) as not_fixed
from
(SELECT svc_ord_nbr, CUST_NAME,
state, city,
date_trunc('day', min(START_DTM)) as start_date,
date_trunc('day', max(START_DTM)) as end_date
FROM table a inner join...
inner join....
WHERE ......
group by SVC_ORD_NBR,
cust_name,
state,
city) q
group by state, city, cust_name
州と都市を表示するために、内部クエリと外部クエリの両方でそれらを2回グループ化する必要があるようです。これが最善の方法であるかどうかは疑問です。
@GordonLinoffは 'date_trunc'を使っているはずです – ddd
' inner join .... '::いくつかのメタ構文ではなく、実際のクエリを投稿してください。 – wildplasser
操作ごとの内部グループと外部グループで、同じ順序でリストされた列のSVC_ORD_NBRが最後にある場合は、パフォーマンスが向上するでしょう。 –