2016-08-02 6 views
0

Unten Abfrage, wenn ich gibt mir ein Ergebnis ausführen, wie unten (SELECT
CASE
WENN prodName ENTHÄLT ('AAA') THEN 'AAA'
WENN prodName ENTHÄLT ('BBB') THEN 'BBB'
WENN prodName ENTHÄLT ('CCC') THEN 'CCC'
WENN prodName ENTHÄLT ('DDD') THEN 'DDD'
WENN prodName ENTHÄLT ('EEE') THEN 'EEE'
WENN prodName ENTHÄLT ('FFF') DANN 'FFF'
WENN prodName ENTHÄLT ('GGG') DANN 'GGG'
WHEN prodName ENTHÄLT ('HHH') THEN 'HHH'
ELSE 'Sonstige'
END AS
prod_name,
EXACT_COUNT_DISTINCT (Benutzer) AS Distinct_users
FROM [Mytable]
GROUP BY 1
ORDER BY 2 DESC
IGNORE CASE)
Sub wählen Sie in BigQuery mit Case-Anweisung

enter image description here

Unter Abfrage, die die gleiche wie oben ist, aber ich habe einen Subselect gegeben, um Datensätze auszulassen, wenn PROD_NAME = aaa ein anderes Ergebnis zurückgibt, wo es verschiedene Benutzer mit Wert 1 zu anderen aggregiert und diff Ergebnis zeigt.

SELECT prod_name, EXACT_COUNT_DISTINCT (Benutzer) AS Distinct_users
VON
(SELECT
CASE
WENN prodName ENTHÄLT ('AAA') THEN 'AAA'
WENN prodName ENTHÄLT ('BBB') THEN ‚BBB '
WHEN prodName ENTHÄLT (' CCC ') THEN 'CCC'
WHEN prodName ENTHÄLT (' DDD ') THEN 'DDD'
WHEN prodName ENTHÄLT (' EEE ') THEN 'EEE'
WHEN prodName ENTHÄLT (' FFF ') DANN 'FFF'
WENN prodName ENTHÄLT ('GGG') THEN 'GGG'
WENN prodName ENTHÄLT ('HHH') THEN 'HHH'
ELSE 'Sonstige'
END AS
prod_name,
EXACT_COUNT_DISTINCT (user AS Distinct_users)
FROM [Mytable]
GROUP BY 1
ORDER BY 2 DESC
IGNORE CASE)

enter image description here

Bitte lassen Sie mich wissen, wie Sie das Problem lösen können. Ich brauche die zweite Abfrage, um die gleiche Ausgabe wie die erste zu liefern, aber ich brauche nicht PROD_NAME = 'AAA'.Ich habe als case-Anweisung enthalten, da meine Tabelle mehrere Daten wie ‚aaa‘, ‚AAA‘, ‚aaa-in‘, ‚Aaa‘ usw. enthält, und ich bin Gruppierung alles zusammen den Gesamtwert

Antwort

1

ich zeigen brauchen die zweite Abfrage gleiche Ausgabe wie zuerst zu schaffen, aber ich weiß nicht prod_name = ‚AAA‘

benötigen, wie etwa nur das einfache Hinzufügen HAVING-Klausel, wie unten

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