sql - SQL 计算不同的匹配值
问题描述
我为此苦苦挣扎了一段时间:
我有 2 个表出版商和学生。
我试图编写一个查询来计算有多少学生共享 postccode 或“pcode”文本值。我使用的数据前后都有前导空格,我也打算在查询中处理它。另一个问题是,一旦您从任一侧修剪这些空间,一些出版商就有相同的邮政编码,所以我需要计算与修剪过的学生邮政编码相等的唯一修剪过的出版商邮政编码。
在尝试以下操作时,我在第一行的右括号中遇到了某种语法错误,我真的很难过
除了语法错误之外,我不太确定这是否会起作用
SELECT COUNT(DISTINCT(LTRIM(RTRIM(publishers.pcode)))) As pubpcode
FROM publishers, students
WHERE (LTRIM(RTRIM((publishers.pcode))))) = pubpcode;
解决方案
我建议做union all
然后汇总:
select trim(pcode), sum(is_student), sum(is_pub)
from (select pcode, 1 as is_student, 1 as is_pub
from students
union all
select pcode, 0, 1
from publisher
) sp
group by trim(pcode)
推荐阅读
- c# - C# 使用 Invoked Class 中的循环更新 Invoking Class 中的信息
- qt - QWebEngineView 不加载 Openlayers
- json - 为什么将括号添加到“jq”中的过滤器会产生有效的 JSON 而没有括号,会产生多个对象输出?
- amazon-web-services - AWS Polly - 如何命名文件?
- spring-boot - spring boot buildpack 总是从 git 下载最新的 packeto 镜像
- amazon-web-services - 如何捕获 sagemaker 错误以防它失败并通过 SES、SNS 通知
- webpack - 运行 webpack --watch 如果修改了模板以外的文件,资产会消失
- react-native - 我无法从 react-native-webview 下载 pdf
- java - 安卓。制作一个运行另一个应用程序的系统应用程序
- python - 无法(重新)挂载或访问我之前在 Google Colab 中能够访问的共享驱动器中的文件