From b18f44e1ad586f3d001bec47296f38af23fe48c5 Mon Sep 17 00:00:00 2001 From: lekss361 Date: Mon, 11 May 2026 17:29:40 +0300 Subject: [PATCH] feat(analytics): add cad_quarter_count to districts endpoint --- backend/app/services/analytics_queries.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/backend/app/services/analytics_queries.py b/backend/app/services/analytics_queries.py index d04752e5..e39d439e 100644 --- a/backend/app/services/analytics_queries.py +++ b/backend/app/services/analytics_queries.py @@ -208,11 +208,19 @@ def districts(db: Session) -> list[dict[str, Any]]: db.execute( text( """ - SELECT district_name, zk_count, flat_count, area_m2, - median_price_per_m2, mean_price_per_m2 - FROM ekb_districts - WHERE district_name <> 'не определён' - ORDER BY zk_count DESC NULLS LAST + SELECT d.district_name, d.zk_count, d.flat_count, d.area_m2, + d.median_price_per_m2, d.mean_price_per_m2, + COALESCE(cq.cad_quarter_count, 0) AS cad_quarter_count + FROM ekb_districts d + LEFT JOIN ( + SELECT district_name, + COUNT(*) FILTER (WHERE cad_quarter IS NOT NULL) AS cad_quarter_count + FROM v_complex_full + WHERE district_name IS NOT NULL + GROUP BY district_name + ) cq ON cq.district_name = d.district_name + WHERE d.district_name <> 'не определён' + ORDER BY d.zk_count DESC NULLS LAST """ ) ) @@ -227,6 +235,7 @@ def districts(db: Session) -> list[dict[str, Any]]: "area_m2": _f(r["area_m2"]), "median_price_per_m2": _f(r["median_price_per_m2"]), "mean_price_per_m2": _f(r["mean_price_per_m2"]), + "cad_quarter_count": int(r["cad_quarter_count"]), } for r in rows ]