は、私がどのようにこの表から、子どもたちの最も多数を持っている顧客を取得するには、次の列SQL親子関係クエリ
CustomerID, CustomerName, ParentCustomerID
を顧客テーブルを持つのでしょうか?
は、私がどのようにこの表から、子どもたちの最も多数を持っている顧客を取得するには、次の列SQL親子関係クエリ
CustomerID, CustomerName, ParentCustomerID
を顧客テーブルを持つのでしょうか?
私はそれを行う最も効率的な方法だとは思えますが、このようなことはうまくいくはずです。
また、私はこれを実行していないので、動作させるには少しマッサージが必要な場合があります。 :)
select customerId, CustomerName
from
customers
where customerId = (
select top 1 ParentCustomerID
from
customers
group by ParentCustomerID
order by count(*) desc
)
あなたはこのような何かを試みることができる:私はあなたがこれをしたいと思う問題
SELECT TOP 1 ParentCustomerID, COUNT(customerID)
FROM customer
GROUP BY ParentCustomerID
を。
select top 1
PARENT.CustomerID,
NumberOfChildren = count(CHILD.CustomerID)
from customers PARENT
left join customers CHILD on PARENT.CustomerID = CHILD.ParentCustomerID
group by PARENT.CustomerID
order by NumberOfChildren desc
これは左自体にテーブルを結合することによって、サブクエリの必要性を回避し、非常に効率的であることができます。
を解決するために、このStamtentを試してみてください
;WITH CTE(ChildCount, ParentCustomerID)
AS
(
SELECT
COUNT(customerID) ChildCount,
ParentCustomerID
FROM TABLE
GROUP BY ParentCustomerID
)
SELECT TABLE.CustomerId, TABLE.CustomerName
FROM CTE
INNER JOIN TABLE
ON
TABLE.CustomerId = CTE.ParentCustomerID
AND
CTE.ChildCount = (SELECT MAX(ChildCount) FROM CTE);
ありがとうございます。 –