[SQL34] 2日以上連続してログインしたプレーヤーの数を計算し、この数をプレーヤーの総数で割ります

SQLクエリを記述して、最初のログインの翌日に再度ログインしたプレーヤーのスコアを小数点以下第2位に四捨五入して報告します。つまり、最初のログイン日から2日以上連続してログインしたプレーヤーの数を数え、この数をプレーヤーの総数で割る必要があります。

クエリ結果の形式は次のとおりです。
アクティビティテーブル:
image.png

結果表:

結果表:
image.png

説明:ID 1のプレーヤーのみが、初日にログインした後に再度ログインするため、答えは1/3 = 0.33です。

 

解決する:

SELECT round((SELECT COUNT(DISTINCT b.player_id)
                FROM activity AS b
                    ,activity AS c
               WHERE b.event_date =
                     (SELECT MIN(temp.event_date) FROM activity AS temp WHERE temp.player_id = b.player_id)
                 AND b.player_id = c.player_id
                 AND datediff(b.event_date, c.event_date) = -1) / COUNT(DISTINCT a.player_id),
             2) AS 'fraction'
  FROM activity AS a;




 

おすすめ

転載: blog.csdn.net/debimeng/article/details/104347728