From: | Recep KIRMIZI <rkirmizi(at)gmail(dot)com> |
---|---|
To: | Sinan Duman <sinanduman(at)gmail(dot)com> |
Cc: | "pgsql-tr-genel(at)postgresql(dot)org" <pgsql-tr-genel(at)postgresql(dot)org> |
Subject: | Re: [pgsql-tr-genel] array_agg kullanımı |
Date: | 2014-02-25 17:25:44 |
Message-ID: | CAHxsdf6UauXYZNHc1JqCmjM90tTETGoOHNLvazvom_hPe0pGbw@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-tr-genel |
Tam istediğim degil ama doğru bakış açısını anladım (Hatalıysam düzeltin
lütfen). gruplanacak elemanı aggregation 'a sokmuyoruz. diğerlerini
sokuyoruz. Sizin yazdığınızı biraz değiştirdim çünkü tip 'e cast etmek ile
ilgili bir hata verdi.
ebebek=# select updated_at, array_agg(product_id::text,',') from
ebebek_productupdate group by product_id;
ERROR: function array_agg(text, unknown) does not exist
Şimdiki hali:
ebebek=# select product_id, array_agg(updated_at) as updated,
array_agg(price) as prices from ebebek_productupdate group by product_id;
-[ RECORD 1
]-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
product_id | 1
updated | {"2014-02-25 18:57:37.918435+02","2014-02-25
18:55:53.858926+02","2014-02-25 18:53:24.424278+02","2014-02-25
17:34:27.762801+02","2014-02-25 17:33:41.818229+02","2014-02-25
17:33:34.807815+02"}
prices | {59.90,59.90,59.90,15.23,10.11,20.11}
-[ RECORD 2
]-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
product_id | 2
updated | {"2014-02-25 18:57:37.942396+02","2014-02-25
18:55:53.88388+02","2014-02-25 18:53:24.449021+02"}
prices | {59.90,59.90,59.90}
-[ RECORD 3
]-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
product_id | 3
updated | {"2014-02-25 18:57:37.966292+02","2014-02-25
18:55:53.907771+02","2014-02-25 18:53:24.473005+02"}
prices | {9.90,9.90,9.90}
-[ RECORD 4
]-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
product_id | 4
updated | {"2014-02-25 18:57:37.990305+02","2014-02-25
18:55:53.931796+02","2014-02-25 18:53:24.497069+02","2014-02-25
17:34:37.01767+02"}
prices | {39.90,39.90,39.90,22.22}
-[ RECORD 5
]-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
product_id | 5
updated | {"2014-02-25 18:57:38.01532+02","2014-02-25
18:55:53.955814+02","2014-02-25 18:53:24.521036+02"}
prices | {27.99,27.99,27.99}
buradaki hali işimi görüyor. updated ve prices alanlarındaki elemanların
indisleride birbirini tutuyor. Yani 1. kayıt için updated[0] değeri ile
prices[0] değeri birbiri ile eşleşiyor.
Teşekkürler.
yani updated[0] =
25 Şubat 2014 19:00 tarihinde Sinan Duman <sinanduman(at)gmail(dot)com> yazdı:
> select product_id, array_agg(updated_at::text,',') from
> ebebek_productupdate group by product_id;
>
> 25 Şub 2014 tarihinde 18:44 saatinde, Recep KIRMIZI <rkirmizi(at)gmail(dot)com>
> şunları yazdı:
>
> > Merhabalar;
> > Aşağıda ki gibi bir tablom var,
> >
> > ebebek=# SELECT * from ebebek_productupdate;
> > id | product_id | price | updated_at
> > ----+------------+-------+-------------------------------
> > 1 | 1 | 20.11 | 2014-02-25 17:33:34.807815+02
> > 2 | 1 | 10.11 | 2014-02-25 17:33:41.818229+02
> > 3 | 1 | 15.23 | 2014-02-25 17:34:27.762801+02
> > 4 | 4 | 22.22 | 2014-02-25 17:34:37.01767+02
> > (4 rows)
> >
> >
> > ben bu ürünleri product_id 'ye göre gruplamak ve her bir product_id için
> tek satır olacak şekilde görmek istiyorum. Yani ilk 3 satır benim için tek
> satır olmalı.
> >
> > Amaç ürünün farklı zamanlardaki fiyat güncellemelerini, aynı satırda,
> tarih ve fiyatları ile birlikte gösterebilmek.
> >
> > Gruplama işini id 'ye göre yapıyor ama bu bana istediğim sonucu
> döndürmüyor:
> >
> > ebebek=# select array_agg(product_id) as pids, price, updated_at from
> ebebek_productupdate group by id;
> > pids | price | updated_at
> > ------+-------+-------------------------------
> > {1} | 20.11 | 2014-02-25 17:33:34.807815+02
> > {1} | 10.11 | 2014-02-25 17:33:41.818229+02
> > {1} | 15.23 | 2014-02-25 17:34:27.762801+02
> > {4} | 22.22 | 2014-02-25 17:34:37.01767+02
> > (4 rows)
> >
> > ebebek=# select array_agg(product_id) as pids, price, updated_at from
> ebebek_productupdate group by pids;
> > ERROR: aggregates not allowed in GROUP BY clause
> > LINE 1: select array_agg(product_id) as pids, price, updated_at from...
> >
> >
> > Vel hasılı aggregate yaptığım sütuna göre gruplamak istiyorum. Zaten
> aggregate yapmamdaki amaç ta bu. Lakin konuya hakim değilim.
> >
> > Tavsiyesi olan?
> >
> >
> > --
> > Saygılarımla... Recep KIRMIZI
>
--
Saygılarımla... Recep KIRMIZI
From | Date | Subject | |
---|---|---|---|
Next Message | N. Can KIRIK | 2014-02-25 19:35:24 | Re: [pgsql-tr-genel] Re: [pgsql-tr-genel] array_agg kullanımı |
Previous Message | Sinan Duman | 2014-02-25 17:00:22 | Re: array_agg kullanımı |