2017-08-03 11 views
0

私はSQLクエリに苦労しています。結果はSQL GROUP BY

私が達成したいタスクが5日間のアプリを使用するユーザー数数えることである、どのように多くのユーザーが4日など

私はこのようなテーブルをしたい:

days | user_count 
---- | --- 
    5 | 2 
    4 | 2 
    2 | 1 
    1 | 1 

私が持っているものイベント、event_date、およびuser_idを持つログファイルです。だから私が照会することができたのはこれでした:

SELECT 
    user_id, 
    COUNT(DISTINCT event_date) AS days 
FROM 
    mytable 
GROUP BY user_id 

これは結果のテーブルです。

user_id | days 
------- | ---- 
     a | 5 
     b | 5 
     c | 4 
     d | 4 
     e | 2 
     f | 1 

しかし、私は上図のようなテーブル必要があります(日、USER_COUNT)

質問:私はクエリで結果を取得できますか?

私は結果を受け取り、それを再度グループ化することを希望します。しかし、これは1つのクエリでは機能しません(私はORDER BYを累積カラムで使用することはできません)。

私はGoogle BigQueryのWebUIを使用しています。一時表は簡単ではないようです。だから私は2つのクエリを組み合わせることを考えていたが、私のSQLスキルには限界がある。 UNION、WHERE INまたはサブクエリについての相関クエリを読んでも、それ以上私にはわかりませんでした。

すべてのヘルプは巣クエリになり

+0

https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#subqueriesなぜクエリをネストできませんか? – xQbert

答えて

0

つの簡単な方法:-)認識されます。 (ただし、あなたがそれを見てみたいメモリテーブルまたはインライン・ビューに作成)

SELECT count(User_ID) cnt, days 
FROM (SELECT user_id 
      , COUNT(DISTINCT event_date) AS days 
     FROM mytable 
     GROUP BY user_id) z 
GROUP BY days 
ORDER BY Days Desc 

参考:Does BigQuery support SubQueries?

私は解析関数または2でこれを行う方法がありますかどうかを確認するために探していますしかし、これまでのところ運がない。

0

選択日、カウント(別名(ユーザ))はuser_countとして からmytable グループの日数。

0

選択 日、 1 100 @ テーブル群からUSER_COUNT としてexact_count_distinct(ユーザ)。