amazon-web-services - 如何创建加入中未找到的项目计数?
问题描述
我有两个表,第一个有 ID 和数字。
我的第二个表再次包含 ID 和 Numbers 行(以及其他数据)(以及其他数据)。我需要在该表中搜索任何 ID,其 Number 不在结果表中的 Numbers 列表中。以及识别表 2 中存在但表 1 中不存在的任何 ID。
我还需要计算表 2 中有多少项目具有表 1 不允许的数字,或者具有表 1 中不存在的 ID。
ID 和编号可能会在两个表中多次列出,并且它们可能存在也可能不存在于任一表中。
除计数外,一切正常。我可以确定哪些 ID 存在或不存在,并且可以创建一个不允许编号的列表。但计数工作不正常。它返回的数字要高得多。
如何合并返回正确数字的计数?我认为它目前计算了所有可能的匹配迭代。
DROP TABLE IF EXISTS `myTable`;
CREATE TABLE `myTable` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`ID` varchar(255),
`Numbers` mediumint default NULL,
PRIMARY KEY (`id`)
) AUTO_INCREMENT=1;
INSERT INTO `myTable` (`ID`,`Numbers`)
VALUES
("CRQ44MPX1SZ",1890),
("UHO21QQY3TW",4370),
("JTQ62CBP6ER",1825),
("RFD95MLC2MI",5014),
("URZ04HGG2YQ",2859),
("CRQ44MPX1SZ",1891),
("UHO21QQY3TW",4371),
("JTQ62CBP6ER",1826),
("RFD95MLC2MI",5015),
("URZ04HGG2YQ",2860),
("CRQ44MPX1SZ",1892),
("UHO21QQY3TW",4372),
("JTQ62CBP6ER",1827),
("RFD95MLC2MI",5016),
("URZ04HGG2YQ",2861);
DROP TABLE IF EXISTS `myTable2`;
CREATE TABLE `myTable2` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`ID` varchar(255),
`Numbers` mediumint default NULL,
PRIMARY KEY (`id`)
) AUTO_INCREMENT=1;
INSERT INTO `myTable2` (`ID`,`Numbers`)
VALUES
("CRQ44MPX1SZ",1870),
("UHO21QQY3TW",4350),
("JTQ62CBP6ER",1825),
("RFD95MLC2MI",5014),
("URZ04HGG2YQ",2859),
("CRQ44MPX1SZ",1891),
("UHO21QQY3TW",4371),
("JTQ62CBP6ER",1826),
("RFD95MLC2MI",5015),
("URZ04HGG2YQ",2860),
("CRQ44MPX1SZ",1882),
("UHO21QQY3TW",4372),
("JTQ62CBP6ER",1827),
("RFD95MLC2MI",5016),
("URZ04HGG2YX",2861),
("URZ04HGG2YX",2867),
("URZ04HGG2YX",2869),
("URZ04HGG2YX",2869);
SELECT mytable2.ID, case when mytable3.ID is null then 0 else 1 end as id_found, count(mytable2.Numbers) as num_count, listagg(distinct mytable2.Numbers,',') as num_list
FROM mytable2
LEFT JOIN mytable1
ON mytable2.ID = mytable1.ID
AND mytable2.Numbers = mytable1.Numbers
LEFT JOIN mytable1 as mytable3
ON mytable2.ID = mytable3.ID
WHERE mytable1.Numbers is null
GROUP BY mytable2.ID, mytable3.ID
ORDER BY num_count DESC, mytable2.ID
预期输出:
(“CRQ44MPX1SZ”, 1, 2, ”1870,1882”)
(“UHO21QQY3TW”, 1, 1, ”4350”)
("URZ04HGG2YX", 0, 4, "2861, 2867, 2869")
解决方案
推荐阅读
- shell - 如何使用 Terraform 将变量更改为值的文件从本地复制到远程?
- 3d - 如何重新排序尺寸?
- python - BitBucket 上 PyMonad 的概述页面
- java - 如何在java中使用一些改变的模式修改文本内容
- php - php while循环中数组的最大值
- docker - 在 Docker 映像的 kubernetes 挂载卷中找不到现有的二进制可执行文件
- dynamics-crm - 在 Dynamics 365 API 中,当所有者可以是系统用户或团队时,如何引用正确的所有权实体以获取详细信息?
- kubernetes - 计算 Kubernetes 中的优势资源
- reactjs - 为什么这个反应应用程序只在开发工具打开的情况下更新新内容?
- ansible - 在 ansible “when” 语句中使用波浪号从变量构建文件名