【发布时间】:2023-03-24 16:43:01
【问题描述】:
假设我有两张桌子:
表 A
| Names | Sales | Department |
|---|---|---|
| Dave | 5 | Shoes |
| mike | 6 | Apparel |
| Dan | 7 | Front End |
表 B
| Names | SALES | Department |
|---|---|---|
| Dave | 5 | Shoes |
| mike | 12 | Apparel |
| Dan | 7 | Front End |
| Gregg | 23 | Shoes |
| Kim | 15 | Front End |
我想创建一个按名称连接表并按表分隔销售额总和的查询。我还想过滤我的查询以在这种情况下通过某些名称删除字符串匹配或部分匹配。
我想要的是下面的结果
表 C:
| A Sales Sum | B Sales Sum |
|---|---|
| 18 | 24 |
我知道我可以通过如下查询来做到这一点:
SELECT SUM(A.sales) AS 'A Sales Sum', SUM(B.sales) AS 'B sales Sum' FROM A
JOIN B
ON B.names = A.Names
WHERE Names NOT LIKE '%Gregg%' OR NOT LIKE '%Kim%'
这个问题是 WHERE 子句似乎不适用,或者适用于错误的表。由于 Names 列在两者之间不完全匹配,我认为发生的情况是当它们加入“ON B.names = A.Names”时,B 的额外内容被排除在外了吗?当我翻转东西时,虽然我得到了相同的结果,但没有应用过滤器。我得到的错误结果如下:
表 D:
| A Sales Sum | B Sales Sum |
|---|---|
| 18 | 62 |
很明显,我在这里遇到了语法问题,因为我对 SQL 还很陌生。我错过了什么?谢谢!
【问题讨论】:
-
您的查询不会按书面形式编译。
-
您没有明确说明要保留或删除哪些行。所以我们不知道什么代码是正确的。如果你没有清楚地表达自己,你怎么知道? (修辞。)PS minimal reproducible example How to Ask
-
我确实展示了我试图获取我想要的列的查询示例以及包含我想要的结果的示例表
-
就像我说的,“你没有说清楚”。就像我说的,“如果你没有清楚地表达自己,你怎么知道?”你希望我们能从那个例子中猜到。而且我们无法剪切、粘贴和运行该示例。
-
我用斜体字表示“我想要的是以下结果”然后显示结果并显示我试图编写的查询作为我的最佳尝试,清楚地表明我想要表 A 和 B 的销售额总和在名称列上使用过滤器。再说一次,我真的不明白我怎么能更具体......
标签: sqlite sum left-join where-clause sql-like