每天计算不同用户类型的注册

时间:2018-11-04 20:21:30

标签: sql oracle count

我的桌子看起来像这样:

|  date_of_register | account_type1  |  account_type2  |
| 18/11/02 23:56:59 |    type_a      |      type_b     |

我想每天计算不同类型用户的注册。 account_type1可以为type_a或null,account_type2可以为type_b或null。

结果应查找这样的一天:

DATE      |  registers type_a  | registers type_b|
18/11/02  |           32       |          21     |

但是我想做两个月。

我不确定如何计算不同列中的记录并获得这样的结果。可能吗?

2 个答案:

答案 0 :(得分:0)

您可以这样做:

SELECT 
TRUNC(date_of_register), 
COUNT(CASE WHEN account_type1 = 'type_a' THEN 1 ELSE 0 END) AS "registers type_a",
COUNT(CASE WHEN account_type2 = 'type_b' THEN 1 ELSE 0 END) AS "registers type_b"
FROM registrations_table 
GROUP BY TRUNC(date_of_register)

答案 1 :(得分:0)

您要计算每天发生的次数。日期是截断的日期。因此,按TRUNC(<datecolumn>)进行汇总。计数很容易,因为您只想计算COUNT(<column>)的非空出现次数。

select
  trunc(date_of_register),
  count(account_type1) as registers_type_a,
  count(account_type2) as registers_type_b
from mytable
group by trunc(date_of_register)
order by trunc(date_of_register);