我正在寻找SQL查询,它会根据具有单个数据列的表中值的出现次数给出一个简单的百分比值。 例: 表有单列数据,有一个标题和10个数据行:
COLUMN_HEADER
XYZ://abc123xyz456-0
XYZ://abc123xyz456-1
XYZ://abc123xyz456-2
XYZ://abc123xyz456-3
ABC://abc123xyz456-4
XYZ://abc123xyz456-5
XYZ://abc123xyz456-6
ABC://abc123xyz456-7
XYZ://abc123xyz456-8
XYZ://abc123xyz456-9
我正在查找查询以查找不以 XYZ开头的所有数据:// * 并将其作为行数的%。
在上面的例子中,有两行以ABC开头://八行以XYZ开头://因此结果应为: 80.00%
(因此10行中有8行不以XYZ://开头)
正如你现在所知,我是SQL中的菜鸟。
MS SQL 2014
提前致谢。
答案 0 :(得分:0)
您可以使用条件聚合执行此操作:
select avg(case when COLUMN_HEADER like 'XYZ://%' then 1.0 else 0 end) as xyz_ratio
你的逻辑和例子是倒退的。 80%的行具有做以" XYZ://"开头的值。根据需要使用like
或not like
。