如何根据不同的关键字从同一个表中获取个人计数

时间:2014-04-29 17:20:39

标签: sql hive

我在表格中有不同的移动类型。像iPhone,Android,Windows等类型。我想使用相同的查询获取每种类型的个别计数。我使用下面的查询来计算一种类型。

   `select type,
    count(1) AS total
    from mobile_types where type = 'iPhone'
    group by type;'

我用一条记录获得了所需的o / p。

iPhone 1000

但是当我尝试多个记录时,我收到了一个错误。我使用以下内容进行多项记录。

   'select type,
    count(1) AS total
    from mobile_types where type = 'iPhone'
    from mobile_types where type = 'windows'
    group by type;'

我得到的错误是" ParseException第5:0行'来自'靠近' iPhone''"

有没有办法以下面的格式输出输出,类型为列名,下面的计数为行?

| iPhone |窗口|机器人|

1000 | 1500 | 900 |

更新

我能够使用以下脚本获得个人计数。

'select type,
    count(1) AS total
    from mobile_types where type = 'iPhone' OR type = 'android' OR type = 'windows'
    group by type;'

但仍需要上面提到的o / p格式。目前的o / p格式

iphone 1000

android 900

windows 1500。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您不需要where子句来获取类型。这将显示所有类型的列表,其中包含总列中每个类型的计数。

select type,
count(*) AS total
from mobile_types 
group by type;

评论后

SELECT type,
COUNT(*) AS total
FROM mobile_types 
WHERE type IN ('IPhone','Android', 'Other Phone Names')
GROUP BY type;

答案 1 :(得分:0)

获取您正在寻找的输出格式:

select
sum(if(type = 'iphone', 1, 0)) as n_iphone,
sum(if(type = 'android', 1, 0)) as n_android,
sum(if(type = 'windows', 1, 0)) as n_windows
from mobile_types;