code: def test_count_and_mean_query(self):
      query = (
          dataframes.QueryBuilder(get_pandas_df(), "privacy_key")
          .groupby(
              "group_key",
              max_groups_contributed=8,
              max_contributions_per_group=11,
          )
          .count()
          .sum("value", name="SUM1")
          .mean("value", min_value=0, max_value=3)
          .build_query()
      )
  
      self.assertEqual(
          query._columns,
          dataframes.Columns("privacy_key", "group_key", "value"),
      )
      self.assertEqual(
          query._metrics_output_columns,
          {
              pipeline_dp.Metrics.COUNT: None,
              pipeline_dp.Metrics.SUM: "SUM1",
              pipeline_dp.Metrics.MEAN: None,
          },
      )
      self.assertEqual(
          query._contribution_bounds,
          dataframes.ContributionBounds(
              max_partitions_contributed=8,
              max_contributions_per_partition=11,
              min_value=0,
              max_value=3,
          ),
      )
  
imports: from absl.testing import absltest
  from absl.testing import parameterized
  from collections import namedtuple
  import pandas
  from pyspark import sql
  from unittest import mock
  from unittest.mock import patch
  from pipeline_dp import dataframes
  import pipeline_dp
label_desc: Use image node_id 14 for calling the QueryBuilderTest obj's underlying member method code with example usage: obj.test_count_and_mean_query() without return types