2017-10-31 8 views
-4

AdventureWorks 2014データベースを使用してSQLクエリを作成しています。Adventure Works SQL Serverお問い合わせ

私が見たいと思っていますどの注文に2つ以上の製品が含まれていますか?オーダー番号、オーダー値、オーダーに含まれる製品数を表示します。

私は(下記参照)、それ自体でステートメントを記述しようとしたが、私は関係を解決することができるようにしたいと思います:

select SalesOrderID , ProductID , LineTotal 
from Sales.SalesOrderDetail 
order by SalesOrderID 

enter image description here

+2

それで何か問題がある場合、これはあなたがしなければならないいくつかの宿題ですか? COUNT()、HAVING、JOINについていくつか調査してみてください。 –

+3

ジョージあなたの最後の3つの質問はすべて同じ宿題です。あなたは何かを学ぶためにあなたの宿題をしてください。いくつかの例が必要な場合はhttps://www.w3schools.com/sql/ –

+0

を確認してください。わからないことを尋ねることはできませんが、あなたが探している魔法の言葉は次のとおりです。[数](https:///docs.microsoft.com/en-us/sql/t-sql/functions/count-transact-sql)を参照してください。その時点から、2つ以上の[have](https://docs.microsoft.com/en-us/sql/t-sql/queries/select-having-transact-sql)の行をフィルタリングするだけです。 –

答えて

0
SELECT SalesOrderID, 
     COUNT(ProductID) as total_products, 
     SUM(LineTotal) as total_invoice 
FROM SalesOrderDetail s 
GROUP BY SalesOrderID 
HAVING COUNT(ProductID) > 2 
ORDER BY s.SalesOrderID 
+0

ありがとう、私は今挑戦していて、私は昨日私の手で多くの例を怠け者ではありませんでした... –

-1

このコードは、あなたの期待の答え

を与えるだろう
SELECT SalesOrderID 
     ,ProductID 
     ,LineTotal 
     ,'Sales Order ' +CAST(SalesOrderID AS VARCHAR(100))+' Contains Productid of'+CAST(ProductID AS VARCHAR(100)) 
     AS [ProductsCountPerOrder] 
     ,Productscount 
    FROM 
(
SELECT salesorderid , 
     productid , 
     linetotal , 
     Count(productid)OVER(partition BY salesorderid ORDER BY salesorderid) AS productscount 
FROM  sales.salesorderdetail 
)dt 
WHERE dt.productscount>2 
ORDER BY salesorderid 
+1

怠惰を促進しないでください –

+0

ohh!私は彼がSQLの初心者だと思った – Sreenu131

+0

彼は、しかし、彼の他の質問を確認する場合はすべて同じです。彼はどんなグループを読むのをやっていませんでした。 –

0

@JuanカルロスOropeza

私はそれはあなたが確認することができました

select s.SalesOrderID, 
     a.SalesOrderCount, 
     a.ProductCount, 
     sum(LineTotal) as OrderValue 
from Sales.SalesOrderDetail s , 
     (select SalesOrderID , 
       count(SalesOrderID) as SalesOrderCount , 
       count(productid) as ProductCount 
     from Sales.SalesOrderDetail 
     group by SalesOrderID 
    ) a 
where s.SalesOrderID = a.SalesOrderID 
group by a.salesordercount, s.SalesOrderID, a.ProductCount 
having a.ProductCount >2 
order by s.SalesOrderID 
+0

今回はあなたが試してみてうれしいです。私の答えをチェックしてください。それはあなたが質問で尋ねる2つの価値を与えます。 –

0
Select 
    SalesOrderID, 
    sum(LineTotal) as [order value], 
    count(SalesOrderID) as [number of Product] 
from Sales.SalesOrderDetail 
    group by SalesOrderID having count(SalesOrderID)>=2 
    order by SalesOrderID desc 
+1

将来的に回答をフォーマットし、OPがあなたの提案された解決策をよりよく理解するのを助けるかもしれないある程度の説明を提供してください。 – chb

関連する問題