diff --git a/dal/db_query/queries.sql b/dal/db_query/queries.sql index 35e6ff8..59bd829 100644 --- a/dal/db_query/queries.sql +++ b/dal/db_query/queries.sql @@ -535,31 +535,37 @@ WITH Funnel AS ( COUNT(*) >= 1 ), Questions AS ( - SELECT - q.id, - q.title AS question_title, - a.content AS answer_content, - CAST(COUNT(*) * 100.0 / NULLIF(q.total_answers, 0) AS INTEGER) AS percentage - FROM - answer a - JOIN ( - SELECT q.id, q.title, COUNT(*) AS total_answers - FROM question q - JOIN answer a ON q.id = a.question_id - WHERE a.quiz_id = $1 - AND a.created_at >= TO_TIMESTAMP($2) - AND a.created_at <= TO_TIMESTAMP($3) - GROUP BY q.id, q.title - ) q ON a.question_id = q.id - WHERE - a.quiz_id = $1 - AND a.created_at >= TO_TIMESTAMP($2) - AND a.created_at <= TO_TIMESTAMP($3) - GROUP BY - q.id, q.title, a.content, q.total_answers - HAVING - COUNT(*) >= 1 - ) + SELECT + q.title AS question_title, + NULL AS answer_content, + CAST(COUNT(*) * 100.0 / NULLIF(q.total_answers, 0) AS INTEGER) AS percentage + FROM + answer a + JOIN ( + SELECT + q.id, + q.title, + COUNT(*) AS total_answers + FROM + question q + JOIN + answer a ON q.id = a.question_id + WHERE + a.quiz_id = $1 + AND a.created_at >= TO_TIMESTAMP($2) + AND a.created_at <= TO_TIMESTAMP($3) + GROUP BY + q.id, q.title + ) q ON a.question_id = q.id + WHERE + a.quiz_id = $1 + AND a.created_at >= TO_TIMESTAMP($2) + AND a.created_at <= TO_TIMESTAMP($3) + GROUP BY + q.title, q.total_answers + HAVING + COUNT(*) >= 1 +) SELECT Funnel.count_start_false, Funnel.count_start_true, diff --git a/dal/sqlcgen/queries.sql.go b/dal/sqlcgen/queries.sql.go index 172343f..18da995 100644 --- a/dal/sqlcgen/queries.sql.go +++ b/dal/sqlcgen/queries.sql.go @@ -1629,31 +1629,37 @@ WITH Funnel AS ( COUNT(*) >= 1 ), Questions AS ( - SELECT - q.id, - q.title AS question_title, - a.content AS answer_content, - CAST(COUNT(*) * 100.0 / NULLIF(q.total_answers, 0) AS INTEGER) AS percentage - FROM - answer a - JOIN ( - SELECT q.id, q.title, COUNT(*) AS total_answers - FROM question q - JOIN answer a ON q.id = a.question_id - WHERE a.quiz_id = $1 - AND a.created_at >= TO_TIMESTAMP($2) - AND a.created_at <= TO_TIMESTAMP($3) - GROUP BY q.id, q.title - ) q ON a.question_id = q.id - WHERE - a.quiz_id = $1 - AND a.created_at >= TO_TIMESTAMP($2) - AND a.created_at <= TO_TIMESTAMP($3) - GROUP BY - q.id, q.title, a.content, q.total_answers - HAVING - COUNT(*) >= 1 - ) + SELECT + q.title AS question_title, + NULL AS answer_content, + CAST(COUNT(*) * 100.0 / NULLIF(q.total_answers, 0) AS INTEGER) AS percentage + FROM + answer a + JOIN ( + SELECT + q.id, + q.title, + COUNT(*) AS total_answers + FROM + question q + JOIN + answer a ON q.id = a.question_id + WHERE + a.quiz_id = $1 + AND a.created_at >= TO_TIMESTAMP($2) + AND a.created_at <= TO_TIMESTAMP($3) + GROUP BY + q.id, q.title + ) q ON a.question_id = q.id + WHERE + a.quiz_id = $1 + AND a.created_at >= TO_TIMESTAMP($2) + AND a.created_at <= TO_TIMESTAMP($3) + GROUP BY + q.title, q.total_answers + HAVING + COUNT(*) >= 1 +) SELECT Funnel.count_start_false, Funnel.count_start_true, @@ -1679,15 +1685,15 @@ type QuestionsStatisticsParams struct { } type QuestionsStatisticsRow struct { - CountStartFalse int64 `db:"count_start_false" json:"count_start_false"` - CountStartTrue int64 `db:"count_start_true" json:"count_start_true"` - CountFResultWithTQuestion int64 `db:"count_f_result_with_t_question" json:"count_f_result_with_t_question"` - CountTResult int64 `db:"count_t_result" json:"count_t_result"` - ResultsTitle string `db:"results_title" json:"results_title"` - ResultsPercentage int32 `db:"results_percentage" json:"results_percentage"` - QuestionsTitle string `db:"questions_title" json:"questions_title"` - AnswerContent sql.NullString `db:"answer_content" json:"answer_content"` - QuestionsPercentage int32 `db:"questions_percentage" json:"questions_percentage"` + CountStartFalse int64 `db:"count_start_false" json:"count_start_false"` + CountStartTrue int64 `db:"count_start_true" json:"count_start_true"` + CountFResultWithTQuestion int64 `db:"count_f_result_with_t_question" json:"count_f_result_with_t_question"` + CountTResult int64 `db:"count_t_result" json:"count_t_result"` + ResultsTitle string `db:"results_title" json:"results_title"` + ResultsPercentage int32 `db:"results_percentage" json:"results_percentage"` + QuestionsTitle string `db:"questions_title" json:"questions_title"` + AnswerContent interface{} `db:"answer_content" json:"answer_content"` + QuestionsPercentage int32 `db:"questions_percentage" json:"questions_percentage"` } func (q *Queries) QuestionsStatistics(ctx context.Context, arg QuestionsStatisticsParams) ([]QuestionsStatisticsRow, error) {