sql - 如何计算多行中出现的名称(字符串)的转换率,其中每行的转换有一列说明 TRUE 或 FASLE?

标签 sql google-bigquery

我正在尝试编写一个查询来计算与表中每个名称相关的转化率,如下表所示(假设真实的表有数千个不同的名称)

<表类=“s-表”> <标题> 姓名 已转换 <正文> abc 正确 abc 错误 xyz 错误 dhk 正确 dhk 正确 dhk 正确 dhk 错误

由于 abc 有一个 true 和一个 false,查询应显示 50% 的转化率(1 TRUE/2 Total = 50%)。对于 dhk,转换率为 75%(3 个 TRUE/总共 4 个),对于 xyz,转换率为 0%,因为没有 TRUE。

查询的最终输出应如下所示:

<表类=“s-表”> <标题> 姓名 转化率 <正文> abc 50% xyz 0% dhk 75%

或者,如果我能弄清楚如何获得下面的输出,那也足以让我弄清楚其余的内容

<表类=“s-表”> <标题> 姓名 已转换 转化率 <正文> abc 正确 50% abc 错误 50% xyz 错误 0% dhk 正确 75% dhk 正确 75% dhk 正确 75% dhk 错误 75%

如有任何帮助,我们将不胜感激,谢谢。

最佳答案

使用下面

select name, 
  avg(if(converted, 100, 0)) ConversionRate
from your_table
group by name       

如果应用于问题中的示例数据 - 输出为

enter image description here

或者,您可以使用下面的

select *, 
  avg(if(converted, 100, 0)) over(partition by name) ConversionRate
from your_table    

带输出

enter image description here

关于sql - 如何计算多行中出现的名称(字符串)的转换率,其中每行的转换有一列说明 TRUE 或 FASLE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72609889/

相关文章:

mysql - SQL MIN() 选择数据。 ORDER表正确

mySQL:这是递归(或相互依赖)的一种形式吗?

google-bigquery - 加载到 BigQuery 时无法使用多个 '*' 模式

google-analytics - 用户 ID 未显示在 BigQuery 中

java - preparedStatement.getString() 方法不适用于嵌套 sql 查询

sql - Oracle 中的 CHECKSUM_AGG 等效项

java - 选择查询的最大日期

SQL - 分组和聚合以计算相对于总数的比率

google-bigquery - 以 CSV 文件格式将数据从 Bigquery 加载到谷歌存储桶

google-bigquery - 使用 Python 查询 GCP Stackdriver 日志