Sql 在DB2中,选择最频繁出现的表并与其他表链接
我有两个表Sql 在DB2中,选择最频繁出现的表并与其他表链接,sql,db2,jupyter,Sql,Db2,Jupyter,我有两个表普查和犯罪 从crime表中,我需要找到community\u area\u number 并将犯罪的社区区域编号链接到表人口普查的社区区域编号,以获取社区区域名称 我能够完成第一步,但无法链接到另一个表。请告诉我哪里做错了。谢谢 %%sql SELECT COUNT(CR.COMMUNITY_AREA_NUMBER) AS MOST_FREQ, CR.COMMUNITY_AREA_NUMBER, CE.COMMUNITY_AREA_NAME from CRIME AS CR, CEN
普查
和犯罪
从crime
表中,我需要找到community\u area\u number
并将犯罪
的社区区域编号
链接到表人口普查
的社区区域编号
,以获取社区区域名称
我能够完成第一步,但无法链接到另一个表。请告诉我哪里做错了。谢谢
%%sql
SELECT COUNT(CR.COMMUNITY_AREA_NUMBER) AS MOST_FREQ, CR.COMMUNITY_AREA_NUMBER, CE.COMMUNITY_AREA_NAME from CRIME AS CR, CENSUS AS CE
WHERE CR.COMMUNITY_AREA_NUMBER = CE.COMMUNITY_AREA_NUMBER
GROUP BY CR.COMMUNITY_AREA_NUMBER
ORDER BY COUNT(CR.COMMUNITY_AREA_NUMBER) DESC LIMIT 1
预期产出
大多数频率、社区区域编号、社区区域名称
43 25 Uptown
抽样普查
样本犯罪
您正在使用聚合函数
COUNT(CR.COMMUNITY\u AREA\u NUMBER)作为MOST\u FREQ
所有其他(非聚合)返回值都需要在GROUPBY子句中
对于您的查询,它意味着尝试将
E.COMMUNITY\u AREA\u NAME
添加到GROUP BY.您应该这样编写查询:
SELECT COUNT(*) AS MOST_FREQ,
CR.COMMUNITY_AREA_NUMBER, CE.COMMUNITY_AREA_NAME
FROM CRIME CR JOIN
CENSUS CE
ON CR.COMMUNITY_AREA_NUMBER = CE.COMMUNITY_AREA_NUMBER
GROUP BY CR.COMMUNITY_AREA_NUMBER, CE.COMMUNITY_AREA_NAME
ORDER BY COUNT(*) DESC
LIMIT 1;
注意正确、明确、标准、可读的JOIN
语法的使用。切勿在FROM
子句中使用逗号
不过,相关的变化是将CE.COMMUNITY\u AREA\u NAME
纳入分组依据
。作为一般规则,所有非聚合列都应在分组中
另外,COUNT(*)
对于计算匹配项更简单,因此此查询使用它而不是计算列的非NULL
值。这与Python无关,它是一个SQL问题示例数据,所需的结果将真正帮助您的问题。感谢您的建议。在将CE.COMMUNITY\u AREA\u NAME
添加到GROUP BY后,我添加了以下错误对“COMMUNITY\u AREA\u NUMBER”列的引用不明确
您必须对该列进行验证-在其前面加上CE。或CR。引用要从中绘制的表感谢此操作。还没有学会加入。我会读到更多的。谢谢你让它成为现实。