2016-03-22 9 views
1

Ich habe eine Sitzungstabelle, die eine userId und einen geschachtelten Datensatz für besuchte Homepage (String) und einen Zeitstempel für jeden Besuch in einer Sitzung hat. Im Grunde ein 1: m-Beziehung in einer Reihe:BigQuery: Angeben einer Bedingung in count()

     UserId|SessionEndTime|page1|timestamp1| 
              |page2|timestamp2| 
              |page1|timestamp3| 

Was ich wissen möchte, ist, wie kann ich alle userId bekommen, die meine Seite 6x in den letzten 6 Monaten besucht haben, und sie sollten Seiten besucht haben (mit einem Namen wie '% astring%') mindestens 2 mal.

Das ist mein Ansatz, aber wie kann ich den ähnlichen Zustand in eine Zählung bringen() ?:

SELECT UserId, COUNT(UserId) AS visitCounter FROM [oxidation.TestVisits] 
WHERE SessionEndTime >= TIMESTAMP_TO_MSEC(DATE_ADD(CURRENT_TIMESTAMP(),-6,"MONTH")) 
     AND LastUserId != 'none' 
GROUP BY 1 
HAVING visitCounter>=6 
ORDER BY 1 ASC 

Antwort

3

hinzufügen SUM(page LIKE '%astring%') AS pageCounter auf Ihre Anfrage

SELECT UserId, COUNT(UserId) AS visitCounter, 
    SUM(page LIKE '%astring%') AS pageCounter 
FROM [oxidation.TestVisits] 
WHERE SessionEndTime >= TIMESTAMP_TO_MSEC(DATE_ADD(CURRENT_TIMESTAMP(),-6,"MONTH")) 
     AND LastUserId != 'none' 
GROUP BY 1 
HAVING visitCounter>=6 
AND pageCounter >= 2 
ORDER BY 1 ASC