## Is your feature request related to a problem?

We currently load the "time conversion bins" funnel view [in two steps](https://github.com/PostHog/posthog/blob/cfd7e586ac144a0fb6c18f90a1657db9897d033a/frontend/src/scenes/funnels/funnelLogic.ts#L164):

```js
const result = await pollFunnel<FunnelStep[] | FunnelStep[][]>({
    ...apiParams,
    refresh,
    // Time to convert requires steps funnel api to be called for now. Remove once two api's are functionally separated
    funnel_viz_type:
        filters.funnel_viz_type === FunnelVizType.TimeToConvert
            ? FunnelVizType.Steps
            : apiParams.funnel_viz_type,
})

if (filters.funnel_viz_type === FunnelVizType.TimeToConvert) {
    const binsResult = await pollFunnel<FunnelsTimeConversionBins>({
        ...apiParams,
        ...(refresh ? { refresh } : {}),
    })
}
```

## Describe the solution you'd like

I'd like to make just one query. This makes caching dashboard results much easier.


#### *Thank you* for your feature request – we love each and every one!

ee/clickhouse/queries/funnels/funnel_time_to_convert.py
]
        steps_average_conversion_time_expression_sum = " + ".join(steps_average_conversion_time_identifiers)
        steps_average_conditional_for_invalid_values = [
            f"{identifier} >= 0" for identifier in steps_average_conversion_time_identifiers
        ]
        
        
        
        query = f"""
            WITH
                step_runs AS (
                    SELECT * FROM (
                        {steps_per_person_query}
                    ) WHERE {" AND ".join(steps_average_conditional_for_invalid_values)}
                ),
                histogram_params AS (
                    /* Binning ensures that each sample belongs to a bin in results */
                    /* If bin_count is not a custom number, it's calculated in bin_count_expression */
                    SELECT
                        floor(min({steps_average_conversion_time_expression_sum})) AS from_seconds,
                        ceil(max({steps_average_conversion_time_expression_sum})) AS to_seconds,
                        round(avg({steps_average_conversion_time_expression_sum}), 2) AS average_conversion_time,
                        {bin_count_expression or ""}
                        ceil((to_seconds - from_seconds) / {bin_count_identifier}) AS bin_width_seconds_raw,
                        /* Use 60 seconds as fallback bin width in case of only one sample */
                        if(bin_width_seconds_raw > 0, bin_width_seconds_raw, 60) AS bin_width_seconds
                    FROM step_runs
                ),
                /* Below CTEs make histogram_params columns available to the query below as straightforward identifiers */
                ( SELECT bin_width_seconds FROM histogram_params ) AS bin_width_seconds,