0

例如,我有这些表:

 __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   |

我想在 sales 表中列出所有没有记录的卖家,但在 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))

还有另一种方法可以使这个计数起作用吗?

4

1 回答 1

3

这是工作方法。您可以使用内部指标来计算每个供应商的销售额,并将其与 IFNULL 函数一起使用。然后您可以使用这样的指标来过滤外部指标,这只是供应商的简单计数。

SELECT COUNT(V_Cod) WHERE (SELECT IFNULL(COUNT(S_Cod), 0) BY V_Cod)=0

当前需要使用 IFNULL,因为没有销售额的供应商不会被内部度量返回,因此条件不会满足。

该指标具有供应商的维度,因此您将能够在 HOW 中使用 V_Cod 和 Name。

旁注 - 从示例来看,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
于 2017-06-19T16:22:43.953 回答