-3

PostgreSQL でこの SQL クエリを理解するのを手伝ってくれる人はいますか?

SELECT sum(count) 
FROM ( 
    SELECT count, 
           time, 
           max(time) OVER (PARTITION BY post_id) max_time 
    FROM totals 
    WHERE cust_id IN %s 
    AND time < %s 
    AND type = %s 
) as ss 
WHERE time = max_time;
4

2 に答える 2

1

列の値が各 post_idの列の最新の値と一致するcount列の合計を返します。timetime

チェックされる合計は、cust_id、時間、およびタイプによって制限されます。これらの条件の値は (明らかに) パラメータとして渡されます。

于 2013-01-10T22:17:11.910 に答える
1

追加コメント

a_horse_with_no_name を使用した OP に関する私のコメントを説明するには、このクエリを次のように書き直すことができます。

SELECT sum(count) 
FROM ( 
    SELECT count, 
           time, 
           RANK() OVER (ORDER BY time DESC PARTITION BY post_id) time_desc 
    FROM totals 
    WHERE cust_id IN %s 
    AND time < %s 
    AND type = %s 
) as ss 
WHERE time_desc = 1;

これにより、このクエリが何をしているのかがより明確になると思います (より標準的な形式であるため)。


元のコメント

推測してみましょう。count はビューの数であり、time はそれらのビューがあった時間です。私の推測では、このようなものです。しかし、KMは教えてくれません。

いずれにせよ、それがどのように機能するかであれば、これはクエリが行うことです:

すべての投稿の合計ビューが表示されます。 (受信パラメータによる制限)

理由は説明できますが、私をののしったことを謝ってくれるのを待っています。

于 2013-01-10T22:30:50.417 に答える