bitte schaut euch mal meine Abfrage als Screenshot im Anhang an.
Damit soll erreicht werden, dass die aktuelle Anzahl an Datensätzen - 365 Tage angezeigt werden, danach die Datensätze der letzten 365 Tage geleert werden und anschließend die nun vorhandenen Datensätze - 365 Tage angezeigt. Das Ganze mit drei Tabellen.
Das Leeren der Tabellen klappt bisher, nur leider bekomme ich es irgendwie nicht hin, vor und nach dem Leeren der jeweiligen Tabelle per SELECT COUNT() dei Anazhl der Zeilen anzuzeigen.
Wenn die schon gelöscht sind, kannst Du sie nicht mehr löschen. Also beim löschen zählen, so:
test=# create table foo as select s from generate_Series(1,10)s;
SELECT 10
Time: 21,439 ms
test=*# select * from foo;
s
----
1
2
3
4
5
6
7
8
9
10
(10 rows)
Time: 0,200 ms
test=*# with x as (delete from foo where s < 8 returning *) select count(x)::text || ' rows gelöscht' as geloescht from x;
geloescht
-----------------
7 rows gelöscht
(1 row)
danke für deine Antwort.
Ist es denn möglich, dass wenigstens vor dem Löschen die Zeilen gezählt und ausgegeben werden? Oder ist das allein schon schwierig, da es hierbei um das Zählen von drei Tabellen geht?
Was genau ist daran das Problem? Du willst hinterher wissen, was Du in den 3 Tabellen gelöscht hast? Dazu kannst Du auch meine CTE-Abfrage erweitern, sinngemäß
with
x as (delete from table_x returning *),
y as (delete from table_x returning *),
z as (delete from table_z returning *)
select (select count() from x) as del_x, (select count() from y) as del_y, …