Обсуждение: Re: [GENERAL] Calcuate percentage.

Поиск
Список
Период
Сортировка

Re: [GENERAL] Calcuate percentage.

От
Sze Yuen Wong
Дата:
Can I somehow get the total number of rows in
a function?

if so, then I can say:

select var1, count(*) / numRows() * 100 from table1 group by var1;

Sze Wong



---"K.T."  wrote:
>
> select var1, count(*) from table1 group by var1;
>
> will get you the count of how many of each number there is...
>
> I think the only way is to get the max and manually loop thru the
rows and
> calc the percentage.
>
> -----Original Message-----
> From: Sze Yuen Wong <swong_@yahoo.com>
> To: pgsql-general@hub.org <pgsql-general@hub.org>
> Date: Tuesday, March 09, 1999 9:48 AM
> Subject: [GENERAL] Calcuate percentage.
>
>
> >Hi,
> >
> > I need to calcuate the percentage from my table:
> >
> >var1
> >------
> >1
> >1
> >1
> >2
> >2
> >3
> >
> >Desire result:
> >
> >var1 |  percentage
> >----------------------------
> >1      |    50%
> >2      |    33%
> >3      |    17%
> >
> >===============================
> >
> >Any clue?
> >
> >Please help.
> >
> >Sze Wong
> >
> >
> >
> >
> >
> >
> >_________________________________________________________
> >DO YOU YAHOO!?
> >Get your free @yahoo.com address at http://mail.yahoo.com
> >
> >
>
>
>

_________________________________________________________
DO YOU YAHOO!?
Get your free @yahoo.com address at http://mail.yahoo.com


Table as parameter in function

От
Kaare Rasmussen
Дата:
As I tried to make a function for this percent calculation I fell over
the problem of passing a table to the function. I'd like to make this
function:

create function NumRows(table) returns int4
as 'select count(*) from $1'
language 'sql';

Is this possible?


Re: [GENERAL] Calcuate percentage.

От
Kaare Rasmussen
Дата:
> Can I somehow get the total number of rows in
> a function?

 create function numRows() returns int4
 as 'select count(*) from <table>'
 language 'sql';

> select var1, count(*) / numRows() * 100 from table1 group by var1;

maybe this is better

select var1, (count(*) * 100) / numRows() from table1 group by var1;