我的桌子看起来像这样:
| 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 |
但是我想做两个月。
我不确定如何计算不同列中的记录并获得这样的结果。可能吗?
答案 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);