diff --git a/ee/lib/gitlab/usage/metrics/instrumentations/count_distinct_report_types_with_resolved_vulnerabilities_per_project_metric.rb b/ee/lib/gitlab/usage/metrics/instrumentations/count_distinct_report_types_with_resolved_vulnerabilities_per_project_metric.rb
index 78d3442d1370ded38e9b485a74a491041772f0f1..9246f4bc8157278ec3464d2c592fd7d9a91e6a12 100644
--- a/ee/lib/gitlab/usage/metrics/instrumentations/count_distinct_report_types_with_resolved_vulnerabilities_per_project_metric.rb
+++ b/ee/lib/gitlab/usage/metrics/instrumentations/count_distinct_report_types_with_resolved_vulnerabilities_per_project_metric.rb
@@ -9,6 +9,11 @@ class CountDistinctReportTypesWithResolvedVulnerabilitiesPerProjectMetric < Data
 
           timestamp_column('vulnerability_state_transitions.created_at')
 
+          # Override sql so that it doesn't use the Vulnerabilities::Read table name
+          def to_sql
+            relation.select("COUNT(*)").to_sql
+          end
+
           # We must override value since we are not able to batch this query due to usage of the count subquery
           def value
             relation.count
diff --git a/ee/spec/lib/gitlab/usage/metrics/instrumentations/count_distinct_report_types_with_resolved_vulnerabilities_per_project_metric_spec.rb b/ee/spec/lib/gitlab/usage/metrics/instrumentations/count_distinct_report_types_with_resolved_vulnerabilities_per_project_metric_spec.rb
index 6c0eb86a5e60a38e9e7816ac09ec68618927e02d..98ebb9eea5b5bba1c81989372339df25ccc1298d 100644
--- a/ee/spec/lib/gitlab/usage/metrics/instrumentations/count_distinct_report_types_with_resolved_vulnerabilities_per_project_metric_spec.rb
+++ b/ee/spec/lib/gitlab/usage/metrics/instrumentations/count_distinct_report_types_with_resolved_vulnerabilities_per_project_metric_spec.rb
@@ -13,6 +13,16 @@
   let_it_be(:project_with_two_resolutions) { create(:project, group: group_with_resolutions) }
   let_it_be(:project_with_one_resolution) { create(:project, group: child_group_with_resolutions) }
   let_it_be(:project_with_no_resolutions) { create(:project, group: group_without_resolutions) }
+  let(:expected_value) { 3 }
+  let(:expected_query) do
+    "SELECT COUNT(*) FROM (" \
+      "SELECT DISTINCT \"vulnerability_reads\".\"project_id\", \"vulnerability_reads\".\"report_type\" FROM " \
+      "\"vulnerability_reads\" INNER JOIN vulnerability_state_transitions\n                  " \
+      "ON vulnerability_state_transitions.vulnerability_id = vulnerability_reads.vulnerability_id " \
+      "WHERE \"vulnerability_state_transitions\".\"to_state\" = 3 AND " \
+      "\"vulnerability_state_transitions\".\"created_at\" BETWEEN '#{start}' AND '#{finish}' " \
+      "GROUP BY \"vulnerability_reads\".\"project_id\", \"vulnerability_reads\".\"report_type\") subquery"
+  end
 
   before do
     create(:vulnerability, :with_read, :resolved, :sast,
@@ -31,16 +41,7 @@
       project: project_with_no_resolutions)
   end
 
-  it_behaves_like 'a correct instrumented metric value and query', { time_frame: '28d', data_source: 'database' } do
-    let(:expected_value) { 3 }
-    let(:expected_query) do
-      "SELECT COUNT(\"vulnerability_reads\".\"vulnerability_id\") FROM (" \
-        "SELECT DISTINCT \"vulnerability_reads\".\"project_id\", \"vulnerability_reads\".\"report_type\" FROM " \
-        "\"vulnerability_reads\" INNER JOIN vulnerability_state_transitions\n                  " \
-        "ON vulnerability_state_transitions.vulnerability_id = vulnerability_reads.vulnerability_id " \
-        "WHERE \"vulnerability_state_transitions\".\"to_state\" = 3 AND " \
-        "\"vulnerability_state_transitions\".\"created_at\" BETWEEN '#{start}' AND '#{finish}' " \
-        "GROUP BY \"vulnerability_reads\".\"project_id\", \"vulnerability_reads\".\"report_type\") subquery"
-    end
-  end
+  it_behaves_like 'a correct instrumented database query execution value',
+    { time_frame: '28d', data_source: 'database' }
+  it_behaves_like 'a correct instrumented metric value and query', { time_frame: '28d', data_source: 'database' }
 end
diff --git a/spec/support/shared_examples/metrics_instrumentation_shared_examples.rb b/spec/support/shared_examples/metrics_instrumentation_shared_examples.rb
index 367924ab76833b87beed8a1d2586837f7dd46760..db7bbdb1d61b5205acc744e332f09c168e473674 100644
--- a/spec/support/shared_examples/metrics_instrumentation_shared_examples.rb
+++ b/spec/support/shared_examples/metrics_instrumentation_shared_examples.rb
@@ -41,6 +41,25 @@
   end
 end
 
+RSpec.shared_examples 'a correct instrumented database query execution value' do |params|
+  let(:time_frame) { params[:time_frame] }
+  let(:options) { params[:options] }
+  let(:metric) { described_class.new(time_frame: time_frame, options: options) }
+
+  around do |example|
+    freeze_time { example.run }
+  end
+
+  before do
+    allow(metric.relation).to receive(:transaction_open?).and_return(false)
+  end
+
+  it 'returns correct value' do
+    query_result = metric.relation.connection.execute(metric.instrumentation).to_a.first.each_value.first
+    expect(query_result).to eq(expected_value)
+  end
+end
+
 RSpec.shared_examples 'a correct instrumented metric value and query' do |params|
   it_behaves_like 'a correct instrumented metric value', params
   it_behaves_like 'a correct instrumented metric query', params