总结价值计数

时间:2018-10-31 18:45:40

标签: sql powerbi dax

我有一个包含名称列的电话数据集。人们可以多次呼叫,因此有重复的名字。在该列上进行计数会给我们:

  • 人员A-3个呼叫
  • 人员B-5个呼叫
  • 人员C-2个通话
  • 人D-3个来电

我真正想要的是#个呼叫的细分,我将其用作图形轴:

  • 2个电话-1个
  • 3个电话-2个
  • 4个通话-0
  • 5个电话-1

感谢阅读!

4 个答案:

答案 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,其值从25

最后,您在该表中添加一列,以计算Cnt表中Summary与当前表中Calls的人数相匹配的人数。

答案 3 :(得分:0)

您可以尝试进行计数,检查count是否为空,然后检查GROUP BY和ORDER BY:

SELECT numcalls, ISNULL(count(*),0)
FROM t
GROUP BY numcalls
ORDER BY numcalls;