1
私は3つのクエリを持っています。私はそれらをすべて1つのクエリにまとめようとしています。ここで彼らは、その出力である:非常によく似た3つのクエリを組み合わせる? (Postgres)
クエリ1:
SELECT distinct on (name) name, count(distinct board_id)
FROM tablea
INNER JOIN table_b on tablea.id = table_b.id
GROUP BY name
ORDER BY name ASC
出力:
A | 15
B | 26
C | 24
D | 11
E | 31
F | 32
G | 16
クエリ2:
SELECT distinct on (name) name, count(board_id) as total
FROM tablea
INNER JOIN table_b on tablea.id = table_b.id
GROUP BY 1, board_id
ORDER BY name, total DESC
出力:
A | 435
B | 246
C | 611
D | 121
E | 436
F | 723
G | 293
最後に、最後のクエリ:
SELECT distinct on (name) name, count(board_id) as total
FROM tablea
INNER JOIN table_b on tablea.id = table_b.id
GROUP BY 1
ORDER BY name, total DESC
出力:
A | 15 | 435 | 14667
B | 26 | 246 | 65123
C | 24 | 611 | 87426
D | 11 | 121 | 55198
E | 31 | 436 | 80612
F | 32 | 723 | 31485
G | 16 | 293 | 43392
EDIT:
A | 14667
B | 65123
C | 87426
D | 55198
E | 80612
F | 31485
G | 43392
、それはこのようになり、それをフォーマットすることは可能ですして
@ Clodoaldo Netoの助けを借りて、私はこれと第一と第三の質問を組み合わせた:
SELECT name, count(distinct board_id), count(board_id) as total
FROM tablea
INNER JOIN table_b on tablea.id = table_b.id
GROUP BY 1
ORDER BY description ASC
この新しいものと2番目のクエリを組み合わせることから私を防ぐ唯一のことは、それであることをboard_id
を必要とGROUP BY
句です。ここからの思いは?
2番目のクエリの 'GROUP BY'句の' board_id'列ことは何ですか? –
@LaurenzAlbe私は2つのクエリをわずかに編集しました。私は '*'ワイルドカードを 'board_id'に置き換えて、同じ出力を得ました。これはどんなことに役立ちますか? – John
'distinct on'は最初のクエリと3番目のクエリには効果がないことに注意してください –