SELECT grantee, privilege_type
FROM information_schema.role_table_grants
WHERE table_name='mytable'
SELECT usename AS role_name,
CASE
WHEN usesuper AND usecreatedb THEN
CAST('superuser, create database' AS pg_catalog.text)
WHEN usesuper THEN
CAST('superuser' AS pg_catalog.text)
WHEN usecreatedb THEN
CAST('create database' AS pg_catalog.text)
ELSE
CAST('' AS pg_catalog.text)
END role_attributes
FROM pg_catalog.pg_user
ORDER BY role_name desc;
5 minute buckets, timestamp field is ts
. Has a problem with gaps in data.
SELECT
to_timestamp(floor(extract(epoch from (ts)) / (5 * 60)) * 5 * 60),
COUNT(*),
REPEAT('|', COUNT(*)::int)
FROM "public"."table"
WHERE "ts" BETWEEN '2021-08-05T12:00Z' AND '2021-08-05T15:30Z'
GROUP BY 1
ORDER BY 1;
1 hour buckets
SELECT
time_bucket,
MAX(lag),
AVG(lag),
COUNT(*)
FROM (
SELECT
event_time_ts,
inserted_ts - event_time_ts lag,
to_timestamp(floor(extract(epoch FROM (event_time_ts)) / (60 * 60)) * 60 * 60) time_bucket
FROM
"public".table_name"
WHERE
"event_time_ts" > NOW() - INTERVAL '1 DAY') events
GROUP BY
time_bucket;