如何在表格中模拟SQL分组依据?

时间:2019-11-22 17:00:32

标签: sql group-by tableau

我是Tableau的新手。我已经将表从数据库连接到我的Tableau桌面,如下所示:

Patient Data

我想显示医院的平均费用和患者总数。 在SQL查询中,我可以轻松使用此查询:

select 
  Hospital,
  count(*) as total_patients,
  avg(cost) average_cost
from table1
group by hospital

如何在Tableau中对此进行模拟?

谢谢。

3 个答案:

答案 0 :(得分:1)

要模拟您的表,请将Hospital添加到行架子,将Measure Names添加到列架子,并添加Measure Names过滤架子。在那里,仅过滤要显示的度量(在这种情况下为Number of recordscost)。

最后,将字段Measure values添加到“文本(商标)”功能区,然后在此处选择所需的聚合(单击成本>>度量>>平均)。

答案 1 :(得分:1)

Tableau默认情况下会生成所谓的聚合查询(也称为分组依据)。您可以从“分析”菜单中进行更改,但无需更改。

您要分组的字段称为“维度”。您正在汇总的字段称为度量。在左侧栏的数据窗格中,字段具有默认角色(维度或度量),但是您可以在任何视图中覆盖字段的角色。

只需将Hospital放在某个架子上,例如Rows,就可以在每个医院的视图中获得一行,然后将度量值放在另一个架子上,选择所需的汇总功能。然后将SUM([记录数])放在列上,将AVG([成本])放在颜色上。您可以重新排列哪些架子上的字段,并且不会更改查询结果,只需重新排列即可—除了Filter和Tooltip架子有些不同。您还可以使用Marks卡顶部的Mark Type来更改演示文稿。

记录数只是一个预定义的等于1的计算字段。因此SUM([记录数])与COUNT(*)相同。 Tableau中没有名为*的字段,但是如果您希望获得相同的效果,则可以使用COUNT(“ *”)。

如@Bob所述,您还可以使用花括号和FIXED,INCLUDE,EXCLUDE语法定义详细程度(LOD)计算。这些是复杂的计算,可让您定义与查询的其余部分结合在一起的子查询,以使您可以进行不同详细程度的计算。它们很有用,但会增加复杂性,并且会降低大型数据集的性能,因此请保留它们以备不时之需,以获取正确的结果。许多(可能是大多数)可视化可以简单地使用尺寸和度量进行定义,而无需编写LOD计算。

我建议避免将所有内容都写为某些人似乎具有很多SQL经验的LOD calc的陷阱。 FIXED LOD calc看起来像SQL,因此从Tableau开始时它们可以是熟悉的实体。

答案 2 :(得分:0)

答案取决于您的视觉效果。如果您打算包括医院和患者,只需创建两个计算字段-

平均费用-

AVG(cost)

患者计数-

count(patient_id)

或者,也许您需要使用Level of Detail Expression.固定的细节表达级别,可以具有比视图更好的细节级别,更粗糙的细节级别或相同的细节级别。汇总细节级别为FIXED的结果的需要取决于视图中的尺寸。-

{ FIXED [hospital], [patient_id] : AVG(cost) } //Avg patient cost by hospital and patient id
{ FIXED [hospital] : COUNT(patient_id) } //# of non distinct patients by hospital