2016-06-21 10 views
2

私の問題は次のとおりです。ServiceTypeWithAvgPriceBelowAvgServicePriceは平均価格が平均サービス価格を下回るサービスタイプの詳細を提供するビューです。sqlは、サブクエリ内の総平均関数を比較します

ServiceType    | ServiceTypeAvgPrice | ServiceAvgPrice 
3rd drafting    | 280    | 522.7083 
4th drafting    | 320    | 522.7083 
client consultation  | 172.5    | 522.7083 
design selection   | 300    | 522.7083 
initial consultation  |  0    | 522.7083 

サンプルデータIは、実際の総平均を下回ると予想5つの平均値を取得しようとしていた

Description    Actual Price 
initial consultation $0 
initial consultation $0 
design selection  $300 
drafting    $1200 
council approval  $600 
client consultation  $360 
develop design   $2070 
client consultation  $180 
client consultation  $180 
client consultation  $135 
initial consultation $0 
design selection  $300 
drafting    $1200 
council approval  $600 
client consultation  $90 
1st drafting   $1920 
2nd drafting   $920 
3rd drafting   $280 
council approval  NULL 
initial consultation $0 
initial consultation $0 
design selection  $300 
drafting    $1500 
council approval  $600 
client consultation  $90 
4th drafting   $320 
initial consultation $0 

:サンプルデータを使用して、以下のクエリは、次のような結果を生成する必要があります一意の説明の平均値と総価格を比較することは非常に困難でした。次のように私は、

select avg(actualPrice) as serviceytpeAvg 
from service 
having avg(actualprice) > (
        select avg(actualprice) 
        from service 
        group by descrption) 

をサブクエリをしようとしていた。しかし、それはより多くのサブクエリに対して1つの値よりも返すことができないので、それが拒否されました。解決策は何ですか?

答えて

2

あなたはOUTERが

SELECT s.[Description] as ServiceType, 
     AVG(s.[Actual Price]) as ServiceTypeAvgPrice , 
     AvgPrice as ServiceAvgPrice 
FROM [Service] s 
OUTER APPLY (
    SELECT AVG(s.[Actual Price]) as AvgPrice 
    FROM [Service] s) p 
GROUP BY s.[Description], AvgPrice 
HAVING AVG(s.[Actual Price]) < AvgPrice 

または単純に適用使用することができます。

SELECT s.[Description] as ServiceType, 
     AVG(s.[Actual Price]) as ServiceTypeAvgPrice , 
     (SELECT AVG([Actual Price]) FROM [Service]) as ServiceAvgPrice 
FROM [Service] s 
GROUP BY s.[Description] 
HAVING AVG(s.[Actual Price]) < (SELECT AVG([Actual Price]) FROM [Service]) 

出力:

ServiceType    ServiceTypeAvgPrice ServiceAvgPrice 
3rd drafting   280,00    505,5769 
4th drafting   320,00    505,5769 
client consultation  172,50    505,5769 
design selection  300,00    505,5769 
initial consultation 0,00    505,5769 
+0

は非常に –

+0

私の喜びあなたに感謝します! :)あなたに感謝して言っている最善の方法は、アップ/有益な答えを受け入れる:) – gofr1