1

クエリに問題があります。私はposgresqlを使用しています。合計行を取得する必要がありますが、「グループ化」という条件があります

table qwe 
----------------------------
TIPE   | VAL
----------------------------
1      | 2
2      | 3 
2      | 1
2      | 4
3      | 1
3      | 3

私が必要とする結果は

-------------------------
TIPE   | VAL | TOTAL TIPE
-------------------------
1      | 2   | 3
2      | 8   | 3
3      | 4   | 3

これまでに試したクエリ

select tipe, sum(val), count(tipe) "total tipe" 
from qwe group by tipe order by tipe


-------------------------
TIPE   | VAL | TOTAL TIPE
-------------------------
1      | 2   | 1
2      | 8   | 3
3      | 4   | 2
4

4 に答える 4

2

あなたはこれを試すことができます:

select
    tipe, sum(val), count(tipe) over() as "total tipe"
from qwe
group by tipe
order by tipe

sql fiddle demo

ご覧のとおり、各グループ内の null 以外のレコードの数をカウントする代わりに、結果セット全体で null 以外のレコードの数をカウントできます。これが句tipeが必要な理由です。over()これはウィンドウ関数と呼ばれます。

于 2013-10-08T10:59:07.810 に答える
1
select
    tipe, sum(val), max(cnt) "total tipe"
from qwe
join (select count(distinct(tipe)) "cnt" from qwe) v on true
group by tipe
order by tipe

SQL フィドルのデモ

于 2013-10-08T11:20:04.510 に答える
0

あなたのクエリは正しい出力を提供しています。TOTAL TIPE目的の出力については、値を 3 に固定する必要があるように見える理由がわかりません。

select tipe, sum(val), 3 as "total tipe" 
from qwe group by tipe order by tipe
于 2013-10-08T10:59:28.640 に答える