2

複数の行を合計し、その合計をセルに挿入する phpmyadmin で SQL クエリを実行しようとしています。

ファイルは日付順にソートされ、次にその他のいくつかの詳細がソートされます。

構文を見つけるのに苦労しています。

基本的に、「ポイント」と呼ばれる 1 つの列と「Total_Points」と呼ばれる別の列があります。

次のようにする必要があります。

+--------+--------------+
| Points | Total Points |
+--------+--------------+
|   10   |      10      |
|   10   |      20      |
|   10   |      30      |
|   10   |      40      |
+--------+--------------+

などなど。
これを行う何かがそこにある必要があるようですが、私はそれを見逃しています

4

2 に答える 2

0

SQLの累積合計については多くの議論があります。

この記事をご覧になることをお勧めします。速度が大きな問題ではない場合は、次を使用することもできます。

select t1.id, t1.SomeNumt, SUM(t2.SomeNumt) as sum 
from @t t1 
inner join @t t2 
  on t1.id >= t2.id 
  group by t1.id, t1.SomeNumt 
  order by t1.id 

重要な問題は、SQLが実際に行を任意の順序で格納しないことです。'現在の合計'のiedaは、行に順序があることを前提としていますが、デフォルトでは、これは当てはまりません。SQL Server 2012にはこのための機能がありますが、人々がそれを使用するまでは、これが最善の方法です。

于 2012-05-07T19:18:27.103 に答える
0

実行中の合計には、次のような「ウィンドウ関数」を使用できます。

create table tbl(ord int, points int);
insert into tbl values(1, 10),(2, 10), (3, 10), (4, 10);

select
    *,
    sum(points) over w total_points
from tbl
window w as (order by ord);

 ord | points | total_points 
-----+--------+--------------
   1 |     10 |           10
   2 |     10 |           20
   3 |     10 |           30
   4 |     10 |           40

あなたのORDER BY基準を columnに「集約」しましたord。もちろん交換することもできます。

これに加えて、具体的なデータベース ベンダーを指定していません。私の例は PostgreSQL で実行されます。他の SQL ダイアレクトは少し異なる場合があります。

于 2012-05-07T18:37:27.483 に答える