From d22c4d6de93d89a11ba2f114b266ac971ebb23cb Mon Sep 17 00:00:00 2001 From: biss Date: Tue, 11 Aug 2026 08:56:03 +0800 Subject: [PATCH] =?UTF-8?q?clickhouse=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClickHouseAnalyticsController.cs | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/Jiaowu.Api/Controllers/ClickHouseAnalyticsController.cs b/src/Jiaowu.Api/Controllers/ClickHouseAnalyticsController.cs index 89bb31b..d5771b8 100644 --- a/src/Jiaowu.Api/Controllers/ClickHouseAnalyticsController.cs +++ b/src/Jiaowu.Api/Controllers/ClickHouseAnalyticsController.cs @@ -61,13 +61,20 @@ public sealed class ClickHouseAnalyticsController( GROUP BY attendanceDate ORDER BY attendanceDate """, cancellationToken); var grades = await client.QueryAsync($""" - SELECT academicTermId, any(academicTermName) AS academicTermName, - sum(studentCount) AS studentCount, - round(sum(averageScore * studentCount) / nullIf(sum(studentCount), 0), 2) AS averageScore, - round(sum(passedCount) / nullIf(sum(studentCount), 0), 4) AS passRate - FROM {options.Database}.gradeStatistics FINAL - WHERE 1 = 1{collegeFilter} - GROUP BY academicTermId ORDER BY academicTermName + SELECT academicTermId, academicTermName, studentCount, + round(weightedScore / nullIf(studentCount, 0), 2) AS averageScore, + round(passedCount / nullIf(studentCount, 0), 4) AS passRate + FROM + ( + SELECT academicTermId, any(academicTermName) AS academicTermName, + sum(studentCount) AS studentCount, + sum(averageScore * studentCount) AS weightedScore, + sum(passedCount) AS passedCount + FROM {options.Database}.gradeStatistics FINAL + WHERE 1 = 1{collegeFilter} + GROUP BY academicTermId + ) + ORDER BY academicTermName """, cancellationToken); // Audit data has no college dimension, so it is never exposed to a