2016-08-02 186 views
0

下面查询的BigQuery选择当我执行给我一个结果如下 (SELECT
CASE
WHEN个prodName CONTAINS( 'AAA')THEN 'AAA'
WHEN个prodName CONTAINS( 'BBB' )THEN 'BBB'
WHEN个prodName CONTAINS( 'CCC')THEN 'CCC'
WHEN个prodName CONTAINS( 'DDD')THEN 'DDD'
WHEN个prodName CONTAINS( 'EEE')THEN 'EEE'
WHEN prodName CONTAINS('FFF')THEN'FFF'
当prodName CONTAINS('GGG')THEN 'GGG'
WHEN个prodName CONTAINS( 'HHH')THEN 'HHH'
ELSE '其他'
END AS
PROD_NAME,
EXACT_COUNT_DISTINCT(用户)AS Distinct_users
FROM [MYTABLE]
GROUP BY 1
ORDER BY 2 DESC
忽略大小写)
子与case语句

enter image description here


下面的查询与上面相同,但为了省略记录,我给了一个子选择,如果PROD_NAME = aaa返回一个不同的结果,它将具有值1的不同用户聚合到其他人并显示差异结果。

SELECT PROD_NAME,EXACT_COUNT_DISTINCT(用户)AS Distinct_users
FROM
(SELECT
CASE
WHEN个prodName CONTAINS( 'AAA')THEN 'AAA'
WHEN个prodName CONTAINS( 'BBB')THEN“BBB '
WHEN个prodName CONTAINS(' CCC ')THEN 'CCC'
WHEN个prodName CONTAINS(' DDD ')THEN 'DDD'
WHEN个prodName CONTAINS(' EEE ')THEN 'EEE'
WHEN个prodName CONTAINS(' FFF')然后'FFF'
WHEN个prodName CONTAINS( 'GGG')THEN 'GGG'
WHEN个prodName CONTAINS( 'HHH')THEN 'HHH'
ELSE '其他'
END AS
PROD_NAME,
EXACT_COUNT_DISTINCT(用户)AS Distinct_users
FROM [MYTABLE]
GROUP BY 1
ORDER BY 2 DESC
忽略大小写)

enter image description here

请让我知道如何解决问题。我需要第二个查询来提供与第一个相同的输出,但我不需要PROD_NAME ='AAA'。我已经包括作为case语句,因为我的表中包含了几个数据,如“AAA”,“AAA”,“AAA级中”,“AAA”等,我分组一切融合在一起,以显示总值

回答

1

我需要第二个查询,以提供相同的输出第一,但我不需要PROD_NAME =“AAA”

如何只简单地增加HAVING子句如下

SELECT 
    CASE 
    WHEN prodName CONTAINS('AAA') THEN 'AAA' 
    WHEN prodName CONTAINS('BBB') THEN 'BBB' 
    WHEN prodName CONTAINS('CCC') THEN 'CCC' 
    WHEN prodName CONTAINS('DDD') THEN 'DDD' 
    WHEN prodName CONTAINS('EEE') THEN 'EEE' 
    WHEN prodName CONTAINS('FFF') THEN 'FFF' 
    WHEN prodName CONTAINS('GGG') THEN 'GGG' 
    WHEN prodName CONTAINS('HHH') THEN 'HHH' 
    ELSE 'Others' 
    END AS 
    PROD_NAME, 
EXACT_COUNT_DISTINCT(user) AS Distinct_users 
FROM [mytable] 
GROUP BY 1 
HAVING PROD_NAME <> 'AAA' 
ORDER BY 2 DESC 
IGNORE CASE