2017-05-12 9 views
0

カラムが[Dist_Id][Name][FatherContactNumber]のテーブルがあります。ジョインと 'where'節を使用してデータの数を計算する

今私は地区内のすべての子供の数と子どもの数がFatherContactNumber != ''である必要があります。

私はFatherContactNumber != ''のすべての子供を見つけるためにクエリを作成しましたが、私も子供の合計数が必要です。

select 
    d.Dist_Name, count(*) [Total_Childernd] 
from 
    Children c 
inner join 
    District d on c.Dist_Id = d.Dist_Id 
where 
    c.FatherContactNumber != '' 
group by 
    d.Dist_Name 

出力:

Dist_Name  Total_Childernd_With_Numbers 
------------------------------------------- 
    Dist_Name1  313 
    Dist_Name2  215 
    Dist_Name3  1624 
    Dist_Name4  38 
    Dist_Name5  2874 
    Dist_Name6  118 
    Dist_Name7  72 
    Dist_Name8  3590 

私の所望の出力は、私はネストされたクエリを作成する必要はありません

Dist_Name  Total_Childernd_With_Parent_Numbers  Total_Childernd 
---------------------------------------------------------------------------- 
    Dist_Name1 | 313        | 
    Dist_Name2 | 215        | 
    Dist_Name3 | 1624       | 
    Dist_Name4 | 38        | 
    Dist_Name5 | 2874       | 
    Dist_Name6 | 118        | 
    Dist_Name7 | 72        | 
    Dist_Name8 | 3590       | 

です。

私は何十億というレコードを持っているので、これを行うには最良の方法を提案してください。

+0

あなたはより具体的にはどうすればよいです – mohan111

答えて

1

このクエリは、

select d.Dist_Name 
     ,count(*) [Total_Childernd] 
     ,count(case when c.FatherContactNumber !='' then 1 else null end) as [Total_Childernd_With_Numbers] 
from Children c 
inner join District d on c.Dist_Id=d.Dist_Id 
group by d.Dist_Name 
関連する問題