我正在尝试提出一个查询,该查询将查找特定列中的所有唯一值,然后计算每个唯一值的实例数,并返回该计数以及每个唯一值与总数的百分比价值数量。
这就是我所拥有的,但它不起作用,因为它只给我第一个独特的项目,而不是所有可能的选项。
select
`column1`
, ROUND(
(count(`column1`)* 100 / (select count(*) from full_db3
where `exuid` in ('e7dfb4dd-0cd2-44df-bd35-6ecc9a061756','56baea00-253b-428e-88fc-9969688ea9c8'))
), 2)
as Percentage
from full_db3 where `exuid` in ('e7dfb4dd-0cd2-44df-bd35-6ecc9a061756','56baea00-253b-428e-88fc-9969688ea9c8')
现在给我的是column1
和Percentage
中的第一个唯一值为100%。
我将动态传递exuid
值,因此它总是一个不同的数字,所以要么我必须计算我传递给它之前传入的值的数量,或者查询必须在某处计算它们。不太确定怎么做。
答案 0 :(得分:1)
您需要按要计算的列进行分组。然后使用子查询将该数字除以表中的总行数:
选择columnA,count(*),(COUNT(*)/(SELECT COUNT(*)FROM myTable))* 100 from myTable group by columnA;