sql - 查找 MAX 列 BigQuery SQL
问题描述
我正在尝试对列中的数据进行“规范化”,使其范围在 0 和 1 之间。我最初的计划是找到该列的 MAX 值并执行以下计算:column/MAX(column)。我遇到的问题是输出看起来像这样
就这样继续下去……
显然,我的查询似乎正在拉动该特定行的最大值,因为它只有一个值,因此与所述值匹配,并且标准化数据始终为一。
这是我用来查找综合浏览量的查询(数据来自 GA,并且架构与默认值相同):
SELECT
pageTitle,
COUNT(*) AS pageviews
FROM (
SELECT
hits.page.pageTitle,
hits.type,
FROM
`medicine-matter.131114627.ga_sessions_*` AS GA,
UNNEST(GA.hits) AS hits
WHERE
type = 'PAGE'
)
GROUP BY
pageTitle
ORDER BY
pageviewDESC
然后我在另一个表中调用页面浏览量,如下所示:
SELECT
pageviews,
MAX(pageviews) as MAX,
pageviews/ MAX(pageviews) as normal_pageview
FROM
`table`
WHERE
pageviews > 1
group by
pageTitle,
pageviews
ORDER BY
normal_pageview DESC
我对 SQL 很陌生,所以如果我做的事情绝对是愚蠢的,我只能道歉。
解决方案
以下是 BigQuery 标准 SQL
#standardSQL
SELECT pageviews,
MAX(pageviews) OVER() max_pageviews,
ROUND(pageviews / MAX(pageviews) OVER(), 2) normal_pageviews
FROM `project.dataset.table`
您可以使用您问题中的示例数据进行测试,使用上面的示例数据,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT 22 pageviews UNION ALL
SELECT 4 UNION ALL
SELECT 14 UNION ALL
SELECT 99 UNION ALL
SELECT 24 UNION ALL
SELECT 4 UNION ALL
SELECT 8
)
SELECT pageviews,
MAX(pageviews) OVER() max_pageviews,
ROUND(pageviews / MAX(pageviews) OVER(), 2) normal_pageviews
FROM `project.dataset.table`
结果
Row pageviews max_pageviews normal_pageviews
1 22 99 0.22
2 4 99 0.04
3 14 99 0.14
4 99 99 1.0
5 24 99 0.24
6 4 99 0.04
7 8 99 0.08
希望您可以根据实际情况轻松调整以上内容
推荐阅读
- sql - Postgres 解决斐波那契数列的方法
- reactjs - 使用 react-hook-form 上传文件后重新渲染组件
- kotlin - 具有反射的数据类的新实例
- sharepoint - Sharepoint Rest API - 更新页面内列表的列
- c - goto的C用法
- c# - 如何一次创建多个角色?(asp.net 核心)
- c# - 如何将枚举菜单添加到游戏对象?
- python - 在 django 项目中迭代两个不同模型的最有效方法是什么
- linux - 将 DEVNAME 作为参数传递给 udevrules 中的脚本
- javascript - 如何从浏览器中的凭证文件中访问 aws 凭证信息以从秘密管理器-赛普拉斯检索秘密