Align TagServersMeasure to use WITH query style similar to others (#29435)

This commit is contained in:
Matt Jankowski 2024-02-29 06:00:58 -05:00 committed by GitHub
parent 14c65180df
commit e1fcb02867
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -28,14 +28,17 @@ class Admin::Metrics::Measure::TagServersMeasure < Admin::Metrics::Measure::Base
def sql_query_string def sql_query_string
<<~SQL.squish <<~SQL.squish
SELECT axis.*, ( SELECT axis.*, (
SELECT count(distinct accounts.domain) AS value WITH tag_servers AS (
FROM statuses SELECT DISTINCT accounts.domain
INNER JOIN statuses_tags ON statuses.id = statuses_tags.status_id FROM statuses
INNER JOIN accounts ON statuses.account_id = accounts.id INNER JOIN statuses_tags ON statuses.id = statuses_tags.status_id
WHERE statuses_tags.tag_id = :tag_id INNER JOIN accounts ON statuses.account_id = accounts.id
AND statuses.id BETWEEN :earliest_status_id AND :latest_status_id WHERE statuses_tags.tag_id = :tag_id
AND date_trunc('day', statuses.created_at)::date = axis.period AND statuses.id BETWEEN :earliest_status_id AND :latest_status_id
) AND date_trunc('day', statuses.created_at)::date = axis.period
)
SELECT COUNT(*) FROM tag_servers
) AS value
FROM ( FROM (
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
) as axis ) as axis