DB2 SELECT MOST 中频繁出现并与其他表链接
Posted
技术标签:
【中文标题】DB2 SELECT MOST 中频繁出现并与其他表链接【英文标题】:In DB2 SELECT MOST Frequent occurrence and link with other table 【发布时间】:2021-05-09 07:15:52 【问题描述】:我有两张桌子Census
和Crime
从crime
表中,我需要找到community_area_number
出现频率最高的地方
并将crime
的community_area_number
链接到表census
的community_area_number
以获得community_area_name
我可以做第一步,但我无法链接到另一个表。请指教我哪里做错了。谢谢
%%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
预期输出
MOST_FREQ ,community_area_number,, COMMUNITY_AREA_NAME
43 25 Uptown
人口普查样本
犯罪样本
【问题讨论】:
这和Python无关,是SQL问题 样本数据和期望的结果对您的问题很有帮助。 感谢您的建议。我已经添加了 【参考方案1】:您应该这样编写查询:
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_AREA_NAME
包含在GROUP BY
中。作为一般规则,所有非聚合列都应在GROUP BY
中。
此外,COUNT(*)
更简单地计算匹配项,因此此查询使用它而不是计算列的非NULL
值。
【讨论】:
感谢这项工作。没学过JOIN。将继续阅读。感谢您使它成为可能。【参考方案2】:您正在使用聚合函数COUNT(CR.COMMUNITY_AREA_NUMBER) AS MOST_FREQ
并且所有其他(非聚合)返回值都需要在 GROUP BY 子句中。
对于您的查询,这意味着尝试将 E.COMMUNITY_AREA_NAME
添加到 GROUP BY。
【讨论】:
将CE.COMMUNITY_AREA_NAME
添加到GROUP BY 后,出现以下错误A reference to column "COMMUNITY_AREA_NUMBER" is ambiguous
您必须对列进行限定 - 以 CE 为前缀。或 CR。引用您要从中绘制它的表格以上是关于DB2 SELECT MOST 中频繁出现并与其他表链接的主要内容,如果未能解决你的问题,请参考以下文章
出现错误 在执行 DB2 EXPORT IXF 时处理 Action String 参数中的 SELECT 字符串时发生 SQL 错误“-204”?