我正在尝试编写一个sql查询,它允许我用历史数据创建一个折线图。我试图弄清楚随着时间的推移,有多少用户在使用我的应用程序的每一个版本(每天)。我的y轴将是所有应用程序的使用率百分比(满分100),x轴是一天,每个构建都是一条不同的线。在任何时候,所有行的总和都应等于100%。
由于此查询应按版本/内部版本进行分组,因此除了日期之外,我还试图找出如何在查询中获取任何给定日期的总用户百分比。到目前为止,我能够得到以下查询:
SELECT DISTINCT
sub.Version,
sub.Build,
sub.app_id,
sub.Users,
sub.`day`,
(
SELECT COUNT(DISTINCT user_id)
FROM snowplow_enricher_good seg
) AS Total,
(sub.Users/Total) * 100 AS Percent
FROM
(
SELECT
visitParamExtractString(seg.contexts, 'version') AS Version,
visitParamExtractString(seg.contexts, 'build') AS Build,
seg.app_id,
seg.`day`,
CONCAT(
Version,
' (',
Build,
')'
) AS AppBuildVersion,
COUNT(DISTINCT seg.user_id) AS Users
FROM snowplow_enricher_good seg
GROUP BY Version, Build, app_id, `day`
ORDER BY Users DESC
) AS sub
WHERE sub.app_id = 'APPID';
请注意,当前显示的百分比是所有天数的百分比,而不是一天。我试着创造一个 WHERE
我的习惯条款 FROM
声明,但失败了。
提前感谢:)
2条答案
按热度按时间gab6jxml1#
组数组
jm81lzqq2#
通过一系列的连接和子查询就可以解决这个问题: