Questa è la query alla base del report Consolidated Pageviews, spero ti sia utile.
-- [params]
-- date :start_date
-- date :end_date
SELECT
ar.date,
CASE
WHEN ar.req_type=6 THEN 'Crawler'
WHEN ar.req_type=7 THEN 'Utenti connessi'
WHEN ar.req_type=8 THEN 'Utenti anonimi'
END,
ar.count AS views
FROM application_requests ar
WHERE req_type IN (6,7,8)
AND ar.date::date BETWEEN :start_date::date
AND :end_date::date
ORDER BY ar.date ASC, ar.req_type
Questa query elenca il numero totale di visualizzazioni della pagina nel periodo.
-- [params]
-- date :start_date
-- date :end_date
WITH data AS (
SELECT
ar.date,
CASE
WHEN ar.req_type=6 THEN 'Crawler'
WHEN ar.req_type=7 THEN 'Utenti collegati'
WHEN ar.req_type=8 THEN 'Utenti anonimi'
END AS Pageview,
ar.count AS views
FROM application_requests ar
WHERE req_type IN (6,7,8)
AND ar.date::date BETWEEN :start_date::date
AND :end_date::date
ORDER BY ar.date ASC, ar.req_type
)
SELECT Pageview, SUM(views) qtt_views
FROM data
GROUP BY Pageview
Sì, è possibile; in questo caso, è necessario prima regolare il formato del campo data e poi modificare la clausola GROUP BY. Di seguito è riportata la query modificata.
-- [params]
-- date :start_date
-- date :end_date
WITH data AS
(SELECT
date_part('month', ar.date) AS month,
date_part('year', ar.date) AS year,
CASE
WHEN ar.req_type=6 THEN 'Crawler'
WHEN ar.req_type=7 THEN 'Utenti connessi'
WHEN ar.req_type=8 THEN 'Utenti anonimi'
END AS pageview,
ar.count AS views
FROM application_requests ar
WHERE req_type IN (6,7,8)
AND ar.date::date BETWEEN :start_date::date
AND :end_date::date
ORDER BY ar.date ASC, ar.req_type
)
SELECT
month,
year,
sum(views) AS qtt_views
FROM data
GROUP BY year, month
ORDER BY year DESC, month ASC