问题标签 [exasol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - GROUP BY 一列,然后 GROUP BY 另一列
我有一个带有销售表的数据库表t :
ID | 类型 | 年龄 |
---|---|---|
1 | 乙 | 20 |
1 | 英国石油公司 | 20 |
1 | 英国石油公司 | 20 |
1 | 磷 | 20 |
2 | 乙 | 30 |
2 | 英国石油公司 | 30 |
2 | 英国石油公司 | 30 |
3 | 磷 | 40 |
如果一个人购买了捆绑商品,则会出现捆绑销售 (TYPE B) 和不同的捆绑商品 (TYPE BP),它们都具有相同的 ID。因此,包含 2 个产品的捆绑包出现 3 次(1x TYPE B 和 2x TYPE BP)并且具有相同的 ID。
一个人还可以在单次销售 (TYPE P) 中购买任何其他具有相同 ID 的产品。
我需要计算客户的平均/最小/最大年龄,但每次销售的多个条目会篡改正确的计算。
实际平均年龄是
并不是
但我不知道如何将销售额减少到单行条目并获得 4 个需要的值?
我是否需要 GROUP BY 两次(首先按 ID,然后按 AGE?)如果是,我该怎么做?
到目前为止我的代码:
但这确实计算每一行。
sql - 将 GROUP BY 与 SELECT CASE WHEN 语句一起使用
我有一张像这样的桌子:
从 2020 年 7 月 1 日到 2020 年 12 月 31 日,由于新冠疫情,营业税从 19% 降低到 16%。
现在我需要知道每个 ORDER_ID 的总金额。结果应该是:
到目前为止我的代码:
但我在 DBeaver 中收到此错误:
如何使用 CASE WHEN 语句通过 ORDER_ID 上的 GROUP BY 计算不同的销售税?我的代码中的错误在哪里?
sql - DATE 和 VARCHAR 之间的比较:它是如何工作的?
我有以下情况:
左侧部分 ( ORDER_DATE
) 存储为 a VARCHAR
,右侧部分为 a DATE
。当我运行代码时,我没有错误;意味着 aVARCHAR
和 a之间的比较DATE
正在工作。我觉得VARCHAR
是转换成 aDATE
然后应用比较运算符;当我有'0000-00-00'
数据时,ORDER_DATE
它会返回格式错误(data exception - invalid value for YYYY format token; Value: '0000-00-00'
)。有人可以证实我的假设是正确的吗?
*是的,我知道我应该存储或转换我VARCHAR
的 a DATE
,然后在两者之间进行比较DATE
,这就是我所做的。但是,我注意到了这个特殊性,我想了解背后的原因!
sql - 将列转换为行的方法 exasol sql
我有两列包含规则和日期列表,如下所示:
预期输出:
我需要将一行更改为列中的项目数。
列表中的项目数可以不同,也不必两个。我必须在 exasol db 中运行它,所以并非所有功能都在那里工作。
谢谢 。寻求支持。
已编辑
我能够通过下面的答案为一个用户获得正确的结果,但是当我添加两个用户时,答案集会成倍增加,我认为连接依据和级别存在一些我不太了解的逻辑。
行重复,我如何从每个新用户重新开始
有两个用户:
请问有什么帮助吗?
sql - 存储过程 SQL exasol
我有一个包含大量数据的表,它需要分解成块并传递给插入查询。我需要为此逻辑编写一个存储过程,因为存储过程是这样起草的(也可以改进):
循环值应该如何改变:
database - Exasol UPSERT 不使用第二张桌子?
我在网上找不到有关此问题的任何信息。似乎 ORACLE 有一个类似的问题,它是使用 处理的DUAL
,正如StackOverflow answer中所建议的那样。
但是我们如何在 Exasol 中做同样的事情呢?根据他们的文档,您需要MERGE
使用辅助表。
我尝试使用与 Oracle 相同的方法,但无济于事:
不能UPSERT
喜欢其他 RDBMS 吗?
sql - 如何在 LEFT JOIN ON 子句中使用子选择?
我有一张桌子
ORD_DATE | ORD_ID | ORD_REF | ORD_TYPE1 | ORD_TYPE2 | 产品编号 | PRODQUAL | 价格 |
---|---|---|---|---|---|---|---|
2020-09-01 | 101 | 101 | 命令 | 命令 | 456 | F | 555 |
2020-09-02 | 102 | 101 | 会议 | 命令 | 456 | F | 555 |
2020-11-30 | 103 | 102 | 命令 | 命令 | 123 | ķ | 444 |
2020-12-01 | 104 | 102 | 会议 | 命令 | 123 | ķ | 444 |
2020-12-01 | 105 | 103 | 命令 | 命令 | 123 | ķ | 444 |
2020-12-01 | 106 | 104 | 命令 | 命令 | 123 | ķ | 333 |
2020-12-02 | 107 | 104 | 会议 | 命令 | 123 | ķ | 333 |
2020-12-08 | 108 | 104 | 会议 | 返回 | 123 | ķ | -333 |
2020-12-01 | 109 | 105 | 命令 | 命令 | 123 | F | 222 |
2020-12-02 | 110 | 105 | 会议 | 命令 | 123 | F | 222 |
和一张桌子:
ORD_DATE | PROD_NUMBER | 产品质量 |
---|---|---|
2020-12-01-00.00.00.000000 | 123 | ķ |
2020-12-01-00.00.00.000000 | 123 | 大号 |
- 在表 t 中是每天的所有销售额。
- 销售有 2 个阶段:首先,当客户购买某物时生成订单(“ORDER”/“ORDER”)。然后它会被确认是在第二天还是通常在接下来的几天内(“CONF”/“ORDER”)。如果客户将产品退回,则为退货(“CONF”/“RETURN”)。
表 s 中是“二手”产品。
- 如果产品在该表中,则表示表 t 中的所有销售额
算作“二手”。
我需要从 2021 年和第 12 个月确认的所有“二手”销售额的总和。但只有带有 CONF/ORDER 或 CONF/RETURN 的行才应该在计算中。为此,我在表 t 中有 CAL_YEAR 和 CAL_MONTH(为减少混乱而省略)。
从表 t 中,只有 ORDER_REF 105 匹配,并且总和为 0,因为只有这 2 行很重要:
到目前为止我的代码:
SQL-Error:“单行子查询返回多于一行
我的问题是将 LEFT JOIN 限制为 ORDER/ORDER(以便 ORDER_REF 105 进入),但仅使用 CONF/ORDER 和 CONF/RETURN 作为总和(以便 ORDER_REF 102 退出)。
任何人都可以帮忙吗?
unicode - 如何通过 LIKE '%\xC2\xA0%' 找到 UTF-8 代码?
我有一列包含 NO-BREAK SPACE (\xC2\xA0) 而不是 SPACE,我需要找到那些行。
复制粘贴作品:
但使用代码点不会:
如何通过 \x 代码点找到列包含此类符号的行?
sql - 在 Exasol 中将表从一个模式移动到另一个模式
我正在尝试将驻留在某个模式中的表移动到具有相同表名的不同模式中。我尝试了以下方法,但它们不起作用:
出现的错误是:
SQL 错误 [42000]:新名称 [第 1 行,第 100 列] 的标识符链无效(会话:1722923178259251200) 和
出现的错误是:
SQL 错误 [42000]:语法错误,意外 IDENTIFIER_PART_,期望 COLUMN_ 或 CONSTRAINT_ [第 1 行,第 62 列](会话:1722923178259251200)
非常感谢!