You mean this one? Hive 0.8 doesn't have CROSS JOIN, so I don't know
if this query works.
SELECT
      A.userType
    , A.userType_count/B.global_count
FROM
    (
    SELECT
          userType
        , COUNT(1) as userType_count
    FROM
        some_table
    GROUP BY
        userType
    ) A
CROSS JOIN
    (
    SELECT
        COUNT(1) as global_count
    FROM
        some_table
    ) B;
On Fri, Sep 7, 2012 at 1:34 PM, Bertrand Dechoux <decho...@gmail.com> wrote:
> Hi,
>
> You could use a cross join.
> You basically have one table
>
> select
>       userType
>     , count(1)
> from
>     some_table
> group by
>     userType
>
> and a second one
>
> select count(1) from some_table
>
> With a cross join you can add the global count to every results in the first
> table and compute a ratio.
>
> Regards
>
> Bertrand
>
>
> On Fri, Sep 7, 2012 at 7:23 AM, MiaoMiao <liy...@gmail.com> wrote:
>>
>> I have a table, containing userId and userType.
>> userId    userType
>> 1    A
>> 2    B
>> 3    C
>> 4    A
>> 5    B
>> 6    B
>>
>> I want to get percentage of each userType.
>> My current solution:
>> 1. Get count of each group via THRIFT
>> select
>>       userType
>>     , count(1)
>> from
>>     some_table
>> group by
>>     userType
>>
>> 2. Calculate each userType using other programming language like PHP.
>>
>> This solution is fine, but I'm just curious, is there a way to do it
>> in one query?
>> I know this query works in mysql, but not hive.
>> select
>>       userType
>>     , count(1)/(select count(1) from some_table)
>> from
>>     some_table
>> group by
>>     userType
>
>
>
>
> --
> Bertrand Dechoux

Reply via email to