例如,我有这些表:
__vendors___ _______sales_______
|V_Cod|Name | |S_Cod |Item |Price|
|1 |Alan | |2 |apple |10 |
|2 |Fred | |2 |sugar |5 |
|3 |Alex | |3 |rice |9 |
|4 |David | |3 |meat |20 |
我想列出销售表中没有记录的所有卖家,但在MAQL编辑器中,以下指标似乎不起作用:
select count(V_Cod) where V_Cod not in (S_Cod)
我还试图分别从每个代码中计算一个,然后用另一个代码减去一个,但它没有用(这个指标是有效的,但我需要在报告中看到供应商的名称, GoodData不允许我使用此指标在HOW选项卡中选择vendor_name:
select (select count(V_Cod)) - (select count(S_Cod))
还有另一种方法可以使这个计数工作吗?
答案 0 :(得分:3)
这是一种有效的方法。您可以使用内部指标来计算每个供应商的销售额,并将其与IFNULL功能一起使用。然后,您可以使用此指标过滤外部指标,这只是供应商的简单计数。
SELECT COUNT(V_Cod) WHERE (SELECT IFNULL(COUNT(S_Cod), 0) BY V_Cod)=0
目前有必要使用IFNULL,因为没有销售的供应商不会被内部指标返回,因此不满足条件。
此指标具有供应商的维度,因此您可以在HOW中使用V_Cod和名称。
附注 - 从示例中看,S_Cod似乎不是Sales中的连接点(更可能看起来像是对V_Cod的引用)。从性能角度来看,要计算每个供应商的销售数量,最好使用COUNT(销售记录)或COUNT(无论是什么是连接销售点)而不是COUNT(S_Cod),因为引擎可以做简单的计数而没有明显的
SELECT COUNT(V_Cod) WHERE (SELECT IFNULL(COUNT(Records of sales), 0) BY V_Cod)=0