私はこのようなテーブルを持っています
id | userId | point | type
1 3 3 1
2 3 5 1
3 3 6 1
4 3 2 2
5 4 5 1
欲しいのは
userId | totalPoint
3 28
4 5
私が計算する方法は、タイプが1のすべてのポイントを合計し、この合計にタイプが2のポイントを乗算することです
例:(3 + 5 + 6)* 2 = 28
多くのクエリを試しましたが、取得できませんでした
どんな助けでも大歓迎です
回答 3 件
製品の集計を作成するには、次の数学トリックを使用します。
SELECT userid, exp(SUM(LOG(ABS(NULLIF(field, 0))))) FROM (select distinct userid, type, sum(point) over(partition by userid, type order by userid)field from #temp group by userid, type, point)a GROUP BY userid
ここでSELECT、サブクエリ、グループのみを使用してみてください
SELECT USER_ID, (SELECT SUM(POINT) FROM THETABLE b WHERE a.USER_ID = b.USER_ID AND TYPE = 1 GROUP BY b.USER_ID, TYPE) * (SELECT SUM(POINT) FROM THETABLE c WHERE a.USER_ID = c.USER_ID AND TYPE = 2 GROUP BY b.USER_ID, TYPE) AS TOTAL_POINT FROM THETABLE a
関連記事
- SQLServerクエリ結果からタイムスタンプを削除します
- SQLSERVERクエリをPOSTGRESに変更します
- SQL Server 2019SystemDataSqlClient名前空間クエリ
- SQLサーバー:不正なキャッシュクエリプランを外科的に削除できますか、それとも間違ったアイデアを追いかけていますか?
- 実行中の合計SQLServerクエリ
- SQL Server Express:1対多のクエリとrow_number()および条件付き集計?
- SQL Server:クエリに基づいて結果を制限する方法
- SQL Serverピボットクエリ:質問
- FUNCTION -SQL Serverクエリを使用して、従業員の現在の投稿を検索します
- クエリコストの大部分を占めるソート操作
これは、最初に思われるよりも少し複雑です。条件付き集計が必要であり、 "2"値が欠落していることに注意する必要があります。