我有一个包含名称列的电话数据集。人们可以多次呼叫,因此有重复的名字。在该列上进行计数会给我们:
我真正想要的是#个呼叫的细分,我将其用作图形轴:
感谢阅读!
答案 0 :(得分:1)
如果要使用SQL解决方案,这基本上是聚合:
select numcalls, count(*)
from t
group by numcalls
order by numcalls;
这不会填写0值。为此,您可以使用表构造函数和left join
:
select v.numcalls, count(t.numcalls);
from (values (2), (3), (4), (5)) v(numcalls) left join
t
on v.numcalls = t.numcalls
group by v.numcalls
order by v.numcalls;
答案 1 :(得分:1)
如果您不需要0个呼叫数量值,则可以使用SQL中的子选择
.
答案 2 :(得分:1)
您可以按照以下步骤在DAX中执行此操作:
CalculatedTable =
VAR Summary = SUMMARIZE(Table1, Table1[Person], "Cnt", COUNT(Table1[Call]))
VAR NumCalls = SELECTCOLUMNS(GENERATESERIES(2,5), "Calls", [Value])
RETURN ADDCOLUMNS(NumCalls, "People", SUMX(Summary, IF([Cnt] = [Calls], 1, 0)))
首先,您汇总数据以获取每个人的计数。
然后,您创建一个表NumCalls
,该表具有单列Calls
,其值从2
到5
。
最后,您在该表中添加一列,以计算Cnt
表中Summary
与当前表中Calls
的人数相匹配的人数。
答案 3 :(得分:0)
您可以尝试进行计数,检查count是否为空,然后检查GROUP BY和ORDER BY:
SELECT numcalls, ISNULL(count(*),0)
FROM t
GROUP BY numcalls
ORDER BY numcalls;