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;
|
WHERE a.id = ANY($1::bigint[]) AND a.deleted = FALSE AND q.accountid = $2 AND a.start = false;
|
||||||
|
|
||||||
-- name: CheckResultOwner :one
|
-- 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
|
package statistics
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal/sqlcgen"
|
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal/sqlcgen"
|
||||||
)
|
)
|
||||||
@ -21,3 +22,23 @@ func NewStatisticsRepo(deps Deps) *StatisticsRepository {
|
|||||||
pool: deps.Pool,
|
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