1

さまざまな種類のイベントを含む非常に大きなイベント テーブルがあり、ある種類のイベントと別の種類のイベントの割合を示す New Relic グラフに取り組んでいます。(テーブル内の合計行数に対するパーセンテージではありません)。

したがって、この例のセグメント テーブルでは、次のようになります。

id  name
1   foo      
2   bar
3   baz
4   bar

次のようなクエリで foo イベントを取得します。

select count(*) from Segment where name='foo'

私の質問: foo イベントと bar イベントの割合を取得するにはどうすればよいですか? それぞれを特定の名前で「として」保存する 2 つのクエリを結合しようと試みましたが、まだうまくいきません。クエリ/グラフで使用する共通テーブル式を作成できるかどうか、またはその方法を知っている人はいますか?

4

3 に答える 3

0

PIVOT を利用できます。これは oracle と mssql で機能するはずですが、NRQL については不明です。

デモ

select (FOO_COUNTER/BAR_COUNTER) * 100 from  (
select * from table1
pivot(count(id) as counter for name in ('foo' foo, 'bar' bar))) x;
于 2020-08-17T19:48:07.310 に答える
0

ctes を使用するには、2 回参照する必要があります。1 つは緑の値、もう 1 つは赤の値です。例(最初のものはデータをロードすることです):


with mock as (select * from (values (1, 'red'), (2, 'green'), (3, 'blue'), (4, 'green')) as mock(id, color)),
     aggregated as (
         select count(*), color
         from mock
         group by color
     )

select ag1.count::float / ag2.count::float, ag1.color
from aggregated ag1,
     aggregated ag2
where ag2.color = 'green'

ここでpostgresを使用しています

于 2020-08-17T19:08:19.540 に答える