sql >> データベース >  >> RDS >> Mysql

日付間隔ごとに一意の訪問者を選択するにはどうすればよいですか?

    データを集約する必要があります。このクエリを試してください:

    SELECT DATE(data_timestamp), COUNT(visitor_id)
    FROM analytics_table
    WHERE DATE(data_timestamp) BETWEEN '2011-05-01' AND '2011-05-31'
    GROUP BY 1
    

    月次データを入力する方法は次のとおりです(警告:未テスト! ):

    <?php
    $sql = "SELECT DATE(data_timestamp), COUNT(visitor_id)
    FROM analytics_table
    WHERE DATE(data_timestamp) BETWEEN '2011-05-01' AND '2011-05-31'
    GROUP BY 1";
    
    $rs = mysql_query($rs);
    $date1 = $datex = '2011-05-01';
    $date2 = '2011-05-31';
    
    $arrayData = $tmpArray = array();
    
    while( $r = mysql_fetch_array($rs) )
    {
       $tmpArray[$r['date']] = $r['count'];
    }
    
    while( $datex <= $date2)
    {
       if( isset($tmpArray[$datex]) )
       {
          $arrayData[$datex] = $tmpArray[$datex];
       }
       else
       {
          $arrayData[$datex] = 0;
       }
       list( $y, $m, $d) = explode('-', $datex);
       $datex = date('Y-m-d', mktime(0, 0, 0, $m, $d, $y));
    }
    
    
    ?>
    

    このクエリの使用:

    • DATE()を使用して、データから日付を取得します。
    • COUNT()は、その特定の日付からの合計データをカウントします。
    • およびGROUPBYを使用して、選択したフィールドに基づいてデータをグループ化します。


    1. Apache2、PHP5、およびMySQL4を使用してWindows XPにWebサーバーをインストールする–パート4

    2. ClusterControlを使用して本番環境に対応したMySQLまたはMariaDBGaleraクラスターをデプロイする方法

    3. Joomlaで使用されるMySQLドライバーを変更します

    4. SQLServer内部結合の基本と例