2017-10-12 9 views
-1
  1. 私はこれまでにコードを書いていましたが、応答はありません。私はpostgreSQLを使用しています。2つの異なる列を使用して、パーセント単位でグループを使用する割合

  2. 最後に、エラーパーセンテージステータス(200 OKまたは見つからないステータスcolounmを参照)を見つけることです。 EG-- 2016年7月22日FOR

    から1.5パーセントERROR

    PSデータベースが異なるステータスと日付と本当に大きいですが、私は上記のコードでは賢明な

  3. 結果の日付をしたい私がしようとしています毎日

のために( - NOT FOUNDは、ステータス/総ステータス)を見つけるためには、コードがある

: -

SELECT status, date(time), round(coun/total) AS percent 
FROM log, 

(SELECT count(*) AS coun 
FROM log 
WHERE status NOT LIKE '200 OK' 
GROUP BY date(time) 
ORDER BY date(time)) c, 


(SELECT count(*) AS total 
FROM log GROUP BY 
date(time) 
ORDER BY date(time)) t 


GROUP BY date(time), status, percent 
ORDER BY date(time); 

私が持っているデータベースは、そのようなものです... enter image description here

+1

...結果を結合する同じテーブルを3回スキャンしないようにされていないいくつかのサンプル表データと予想される結果を追加 - (。ない画像)フォーマットされたテキストとして – jarlh

+0

あなたは上で参加しています暗黙の結合の 'サブクエリ'?私は 'postgresql'ではありませんが、なぜあなたは' subqueries'を 'round()'の中に入れたり、 'Select'文の上の変数に入れていいのでしょうか。 –

答えて

0
SELECT distinct status, date(time), round(count(1) over (partition by date(time))/count(1) over()) AS percent, count(1) over (partition by date(time)), count(1) over() 
FROM log 

それは一日あたりのステータスのためにあなたのパーセンテージを与えるだろう。 200だけでなく、すべて、それは一般的なクエリでそれをフィルタリングしないので、より意味をなさないでしょう。

を入力するか、まだ必要な場合は、FILTER (where status NOT LIKE '200 OK')を追加することができます。

が、一般的な考え方は

関連する問題