我知道从 Oracle BI 工具中检索我正在寻找的结果需要编写的确切 SQL,但是,由于我是 Oracle BI 的新手,我正在努力寻找一种方法来重现相同的结果。我意识到最终的答案在很大程度上取决于 BI 数据模型,这需要比 Stack Overflow 上的问题更多的沟通,所以我正在寻找更通用的操作方法答案,而不是针对我的场景的特定明确答案。
也许 SQL 会对初学者有所帮助:
select "All"."DT", ("LessThan5Mins"."Count" / "All"."Count") * 100
from
(
select to_char(m."EndDateTime", 'YYYY-MM') "DT", count(*) "Count"
from "Measurement" m,
"DwellTimeMeasurement" dtm
where dtm."MeasurementBase_id" = m."Id"
group by to_char(m."EndDateTime", 'YYYY-MM')
) "All",
(
select to_char(m."EndDateTime", 'YYYY-MM') "DT", count(*) "Count"
from "Measurement" m,
"DwellTimeMeasurement" dtm
where dtm."MeasurementBase_id" = m."Id"
and m."MeasValue" <= 300
group by to_char(m."EndDateTime", 'YYYY-MM')
) "LessThan5Mins"
where "All"."DT" = "LessThan5Mins"."DT";
这样做的目的是返回小于或等于 5 分钟(300 秒)的停留时间记录的百分比。
我有一个事实代表上述查询中的“MeasValue”字段。
我为在 BI 中重现上述查询的双重结果集性质所做的所有尝试都失败了。
以上在 OBIEE 中是否可行,如果可以,我该如何实现?