查询SQL表中出现的百分比

查询SQL表中出现的百分比,sql,sqlite,Sql,Sqlite,我有一个名称表,其中每一行都有列名称和引用 我想从表中计算某个名称的百分比 如何在一个查询中执行此操作?由于字段列表中的子查询,此操作不是很优雅,但如果您希望在一个查询中执行此操作,则此操作将完成: SELECT `name`, (CAST(SUM(`occurance`) AS DOUBLE)/CAST((SELECT SUM(`occurance`) FROM `user`) AS DOUBLE)) as `percent` FROM `user` WHERE `nam

我有一个名称表,其中每一行都有列名称和引用

我想从表中计算某个名称的百分比


如何在一个查询中执行此操作?

由于字段列表中的子查询,此操作不是很优雅,但如果您希望在一个查询中执行此操作,则此操作将完成:

SELECT 
  `name`,
  (CAST(SUM(`occurance`) AS DOUBLE)/CAST((SELECT SUM(`occurance`) FROM `user`) AS DOUBLE)) as `percent`
FROM 
  `user`
WHERE
   `name`='miroslav';

希望这有帮助,

由于字段列表中的子查询,它不是很优雅,但如果您希望在一个查询中使用它,这将完成工作:

SELECT 
  `name`,
  (CAST(SUM(`occurance`) AS DOUBLE)/CAST((SELECT SUM(`occurance`) FROM `user`) AS DOUBLE)) as `percent`
FROM 
  `user`
WHERE
   `name`='miroslav';
希望这对您有所帮助,

您可以通过以下方式获得:

您可以使用以下方法获得它:

试试这个:

SELECT name, cast(sum(occurance) as float) /
(select sum(occurance) from test) * 100 percentage FROM test
where name like '%dog%'
试试这个:

SELECT name, cast(sum(occurance) as float) /
(select sum(occurance) from test) * 100 percentage FROM test
where name like '%dog%'

我认为条件聚合是最好的方法:

select sum(case when name = @name then occurrences else 0 end) / sum(occurrences) as ratio
from t;

如果您想要一个介于0和100之间的实际百分比乘以100。

我认为条件聚合是最好的方法:

select sum(case when name = @name then occurrences else 0 end) / sum(occurrences) as ratio
from t;

如果您想要一个介于0和100之间的实际百分比乘以100。

您的意思是要计算包含特定名称的行数吗?因此每行都有一个引用整数字段,因此实际上它是sum引用。是的,我想计算百分比可以是该名称的0-100您的意思是要计算包含特定名称的行数吗?因此每行都有一个引用整数字段,因此实际上它是sum引用。是的,我想计算的百分比可能是0-100name@forpas这不计算出现的次数,只计算表中的单个用户,而是将其除以表中的用户数。假设每个用户只有一行用户是唯一的,则此查询对于您查询的任何用户都具有相同的值:/从评论和对答案的接受程度,您可以决定这是否是OP想要的。哦,实际上我没有注意到我不被接受,所以您想要什么?每行都有一个引用字段,因此,我们需要先计算发生率,然后计算百分比calculation@forpas这不计算出现的次数,只计算表中的单个用户,而是将其除以表中的用户数。假设每个用户只有一行用户是唯一的,则此查询对于您查询的任何用户都具有相同的值:/从评论和对答案的接受程度,您可以决定这是否是OP想要的。哦,实际上我没有注意到我不被接受,所以您想要什么?每行都有一个引用字段,因此,我们需要先统计发生率,然后进行百分比计算