update query
This commit is contained in:
parent
db75b0e515
commit
621de17c77
@ -317,4 +317,71 @@ FROM answer a
|
||||
WHERE a.id = ANY($1::bigint[]) AND a.deleted = FALSE AND q.accountid = $2 AND a.start = false;
|
||||
|
||||
-- name: CheckResultOwner :one
|
||||
SELECT q.accountid FROM answer a JOIN quiz q ON a.quiz_id = q.id WHERE a.id = $1 AND a.deleted = FALSE AND a.start = false;
|
||||
SELECT q.accountid FROM answer a JOIN quiz q ON a.quiz_id = q.id WHERE a.id = $1 AND a.deleted = FALSE AND a.start = false;
|
||||
|
||||
-- name:DeviceStats :many
|
||||
WITH DeviceStats AS (
|
||||
SELECT
|
||||
device_type,
|
||||
COUNT(*) AS device_count
|
||||
FROM
|
||||
answer
|
||||
WHERE
|
||||
quiz_id = $1
|
||||
AND created_at >= to_timestamp($2)
|
||||
AND created_at <= to_timestamp($3)
|
||||
AND result = TRUE
|
||||
GROUP BY
|
||||
device_type
|
||||
),
|
||||
OSStats AS (
|
||||
SELECT
|
||||
os,
|
||||
COUNT(*) AS os_count
|
||||
FROM
|
||||
answer
|
||||
WHERE
|
||||
quiz_id = $1
|
||||
AND created_at >= to_timestamp($2)
|
||||
AND created_at <= to_timestamp($3)
|
||||
AND result = TRUE
|
||||
GROUP BY
|
||||
os
|
||||
),
|
||||
BrowserStats AS (
|
||||
SELECT
|
||||
browser,
|
||||
COUNT(*) AS browser_count
|
||||
FROM
|
||||
answer
|
||||
WHERE
|
||||
quiz_id = $1
|
||||
AND created_at >= to_timestamp($2)
|
||||
AND created_at <= to_timestamp($3)
|
||||
AND result = TRUE
|
||||
GROUP BY
|
||||
browser
|
||||
),
|
||||
TotalStats AS (
|
||||
SELECT
|
||||
COUNT(*) AS total_count
|
||||
FROM
|
||||
answer
|
||||
WHERE
|
||||
quiz_id = $1
|
||||
AND created_at >= to_timestamp($2)
|
||||
AND created_at <= to_timestamp($3)
|
||||
AND result = TRUE
|
||||
)
|
||||
SELECT
|
||||
device_type,
|
||||
(device_count::FLOAT / total_count) * 100 AS device_percentage,
|
||||
os,
|
||||
(os_count::FLOAT / total_count) * 100 AS os_percentage,
|
||||
browser,
|
||||
(browser_count::FLOAT / total_count) * 100 AS browser_percentage
|
||||
FROM
|
||||
DeviceStats,
|
||||
OSStats,
|
||||
BrowserStats,
|
||||
TotalStats;
|
@ -1,6 +1,7 @@
|
||||
package statistics
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal/sqlcgen"
|
||||
)
|
||||
@ -21,3 +22,23 @@ func NewStatisticsRepo(deps Deps) *StatisticsRepository {
|
||||
pool: deps.Pool,
|
||||
}
|
||||
}
|
||||
|
||||
type DeviceStatReq struct {
|
||||
QuizId string
|
||||
From uint64
|
||||
To uint64
|
||||
}
|
||||
|
||||
type DeviceStatResp struct {
|
||||
Device map[string]float64
|
||||
OS map[string]float64
|
||||
Browser map[string]float64
|
||||
}
|
||||
|
||||
func (r *StatisticsRepository) GetDeviceStatistics(ctx context.Context, req DeviceStatReq) DeviceStatResp {
|
||||
resp := DeviceStatResp{
|
||||
Device: make(map[string]float64),
|
||||
OS: make(map[string]float64),
|
||||
Browser: make(map[string]float64),
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user