sql - sql select count(* like '%%')/select count(*)
问题描述
我想计算具有blah
某处的段落相对于总段落数的数量比例。
我试过了:
select
(select count(*) from raw_data where lower(Paragraph) like '%blah%') a,
(select count(*) from raw_data) b,
a/b
但最终出现以下错误:
SQL 语句中的错误:AnalysisException:无法解析“
a
”给定的输入列:[];第 1 行,第 164 行;
但是,如果我跑
select
(select count(*) from raw_data where lower(Paragraph) like '%blah%') a,
(select count(*) from raw_data) b
返回具有正确计数的 2 列:
a b
9 100
我想:
a b a/b
9 100 0.09
有什么建议么
解决方案
使用条件聚合:
select sum(case when lower(Paragraph) like '%blah%' then 1 else 0 end) as a,
count(*) as b,
avg(case when lower(Paragraph) like '%blah%' then 1.0 else 0 end) as a_b
from raw_data;
推荐阅读
- c# - 如何在dotnet core中获取BsonElement值以获取mongodb字段名称的字符串
- git - 运行交互式变基时,我之前的提交是哪一个?
- r - 为什么我不能在 R 中使用 knitr::kable() 以“markdown”格式打印数据帧?
- c# - C# Object Intantiation 格式问题声明变量与不声明变量
- swift - 带有 SwiftUI 内容的 UITableViewHeaderFooterView 自动插入安全区域
- ruby - Rspec“主题”和“让”不记住块中的值?
- javascript - 在 NodeJS/Mongo 中获取集合的最后一个值
- mysql - mysql_tzinfo_to_sql - 在加载时区表和其他问题后更新它们
- python - Discord 机器人发送 2 条消息而不是 1 条
- html - 无法更改 div 文本颜色或背景颜色