1

以下の 2 つのクエリを 1 つのクエリに結合するにはどうすればよいですか?

select count(distinct user_id) as action_1_count, date  
from table    
where action = "action_1"  
group by date;

select count(distinct user_id) as action_2_count, date
from table  
where action = "action_2"  
group by date;
4

4 に答える 4

1

上記のクエリをマージするには、次のようにします。

SELECT date,
         CASE WHEN action  = "action_1" THEN COUNT(user_id) END AS Action1Count,
         CASE WHEN action  = "action_2" THEN COUNT(user_id) END AS Action2Count
  FROM table    
  WHERE action IN ("action_1", "action_2")
  GROUP BY date
于 2012-08-15T18:01:44.820 に答える
0

あなたのクエリは次のようになります

SELECT COUNT(user_id), date FROM table WHERE action IN ('action_1', 'action_2') GROUP BY date

SUM()関数を使用する別の方法を次に示します。

SELECT 
  SUM(action ='action_1') count_1,
  SUM(action ='action_2') count_2, 
  SUM(action ='action_1' OR action ='action_2') `full_count`,
  date 
FROM
 table 
GROUP BY date

式で使用SUM()するとブール値になりaction ='action_1'、結果が 1 になり、そうでない場合は 0 になり、これがすべて合計され、式の結果に基づいてカウントが生成されます。

于 2012-08-15T18:01:12.677 に答える
0
SELECT COUNT(user_id), date
FROM table
WHERE action IN ('action_1', 'action_2)
GROUP BY action, date
于 2012-08-15T17:58:35.050 に答える
0

上記の回答では、action_2 には複数の行が表示されますが、action_2 には 1 行しか必要ないように見えます。

ユニオンを使用できます:

select '1', count(distinct user_id), date
from table
where action = "action_1"
group by 3
union
select '2', count(distinct user_id), max(date)
from table
where action = "action_2"
group by 3;
于 2012-08-15T18:05:05.703 に答える