2016-03-22 5 views
1

'da bir koşul belirtin Kullanıcı oturumu ve ziyaret edilen ana sayfa (dize) için yuvalanmış bir kayıt ve bir oturumda her ziyaret için bir zaman damgası olan bir oturum tablosu var. Temelde bir 1: Bir satırda m ilişkisi:BigQuery: count()

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

Ne bilmek istiyorum ben son 6 ay içinde sayfam 6x ziyaret etmiş tüm userId böyle ulaşır ve bir adla (sayfalarını ziyaret eden gerektiğini En az 2 kez '% astring%' gibi.

Bu benim yaklaşımdır ama bir sayım() ?: içine benzeri durumun getirmek nasıl

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 

cevap

3

sorgunuzla SUM(page LIKE '%astring%') AS pageCounter eklemek

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