错误在运行查询以查找计数差异时

时间:2019-08-08 11:47:47

标签: amazon-redshift

我想从同一视图中找到2个计数之间的差,即- 来自同一VIEW view_z_a_base的总计数和唯一计数之间的差异。

仅供参考-视图结构为- 表 z_a 是根据VIEW view_z_a 创建的,而VIEW view_z_a 是根据VIEW view_z_a_base 创建的。

查询正在执行-
const wrapper = item => {
    switch ([item.type,item.name].join()) {
        case ['Url','Website'].join():
            return Text(values.Website)
        case ['Email','Email'].join():
            return Text(values.Email)
        case ['Mobile','TelegramPhoneNumber'].join():
            return Mobile(values.TelegramPhoneNumber)
        case ['Phone','Phone1'].join():
            return Phone(values.Phone1)
        case ['Phone','Phone2'].join():
            return Phone(values.Phone2)
        default:
            return Text(values[4])
    }
}

// Ignore these, it's just to don't make it crash.
const Text = i => i;
const Phone = i => i;
const Mobile = i => i;
const values = { Website: 'Website', Email: 'Email', TelegramPhoneNumber: 'TelegramPhoneNumber', Phone1: 'Phone1', Phone2: 'Phone2', 4: '4'};
// Endignore.

// Tests
const testFirst = { type: 'Url', name: 'Website', values };
const testThird = { type: 'Mobile', name: 'TelegramPhoneNumber', values };
const testDefault = {type: 'Hello', name: 'World', values };

console.log(wrapper(testFirst)); // Website expected
console.log(wrapper(testThird)); // TelegramPhoneNumber expected
console.log(wrapper(testDefault)); // 4 expected

预期结果-

2个计数的差异-

SELECT COUNT(*) -(SELECT COUNT(*)FROM (SELECT DISTINCT * FROM 
<schema>.vw_z_a_base))AS no_of_duplicates
FROM <schema>.vw_z_a_base;

实际结果-

错误信息 _
?column?
0

同一查询适用于表,但不适用于视图,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的错误,最终在我的情况下主要是与类型转换有关。包含在 b/c 下方,确实有针对此错误的三个 google 结果,因此希望它可以帮助某人。在您的情况下,我怀疑它与 SELECT COUNT(*)FROM (SELECT DISTINCT * FROM <schema>.vw_z_a_base) 元素有关。我认为您可能在这里采取了不必要的步骤,这可能会返回一些 SQL 很难执行减法的东西。您应该能够消除此处的嵌套选择,这也使内容更易于阅读。试试:

SELECT COUNT(*) - COUNT(DISTINT *) as no_of_duplicates from <schema>.vw_z_a_base

回到我的案例,我的代码来自:

case when coalesce(allup_charges,0) > 156.04 then 1

到:

case when coalesce(allup_charges::numeric,0)>156.04 then 1

这解决了我的问题。我还发现 mysqlworkbench 在这里的类型转换比 tableau 少得多。如果你继续遇到这个问题只是过度类型化,你应该没问题?