sql >> データベース >  >> RDS >> Sqlserver

GROUP BY と ROW_NUMBER を組み合わせるには?

    うわー、他の答えは複雑に見えます - だから私は何か明らかなことを見逃していないことを願っています.

    OVER を使用できます /PARTITION BY 集計に対して、そして GROUP BY なしでグループ化/集計を行います 句。したがって、クエリを次のように変更しました:

    select T2.ID AS T2ID
        ,T2.Name as T2Name
        ,T2.Orders
        ,T1.ID AS T1ID
        ,T1.Name As T1Name
        ,T1Sum.Price
    FROM @t2 T2
    INNER JOIN (
        SELECT Rel.t2ID
            ,Rel.t1ID
     --       ,MAX(Rel.t1ID)AS t1ID 
    -- the MAX returns an arbitrary ID, what i need is: 
          ,ROW_NUMBER()OVER(Partition By Rel.t2ID Order By Price DESC)As PriceList
            ,SUM(Price)OVER(PARTITION BY Rel.t2ID) AS Price
            FROM @t1 T1 
            INNER JOIN @relation Rel ON Rel.t1ID=T1.ID
    --        GROUP BY Rel.t2ID
    )AS T1Sum ON  T1Sum.t2ID = T2.ID
    INNER JOIN @t1 T1 ON T1Sum.t1ID=T1.ID
    where t1Sum.PriceList = 1
    

    これにより、要求された結果セットが得られます。



    1. Pythonとpsycopg2を使用してCSVをpostgresにインポートするときにエラーが発生しました

    2. JDBCでMySQLを使用して.sqlスクリプトを実行する

    3. 特殊文字のみを含む行を検索するためのSQLクエリ

    4. Oracle SQL updateステートメントはどの順序で列の値を変更しますか?