我的 nycgrid 表,其中包含以下架构id,x1,x2,y1,y2
。它看起来像以下示例:
22,910000,920000,120000,130000
67,930000,940000,170000,180000
171,980000,990000,210000,220000
另一张表 nyccrash 包含有关从1989年到2007年发生的汽车事故的信息的元组(共计12,000条记录)。第一个属性是 crash_year ,其次是事故类型,天气状况等,最后是 x_coordinate 和 y_coordinate ,其中车祸已经发生发生在纽约市。
2007,2,9,4,1,1028977,202232
2004,1,1,1,4,1012600,214101
2003,1,9,1,1,958775,156149
1999,1,1,1,1,997349,175503
这是我之前在stackoverflow上提出的问题的扩展问题。
我正在尝试找到他们拥有的方格网格(网格ID) 2007年发生的车祸比1989年少。大约有100起 nycgrid 表中的行。我只需要那些少用的行 2007年发生的事故发生在1989年。
第二部分,可能稍微容易一点,我怎么能找到 每个方格(nycgrid.id)的车祸数量?其他 单词,如何显示每个网格ID上发生了多少次崩溃?每 崩溃已关联x和y坐标。每个网格都有一个x1-x2-y1-y2 构成正方形的坐标。
答案 0 :(得分:2)
从问题RBarryYoung's answer开始,我们只使用SUM/CASE
转动年份,然后比较值
SELECT ID
FROM
(SELECT
grid.ID,
SUM(CASE WHEN yearCol = 1989 THEN 1 ELSE 0 END) CrashCount_1989,
SUM(CASE WHEN yearCol = 2007 THEN 1 ELSE 0 END) CrashCount_2007
FROM crashes
INNER JOIN grid
ON crashes.x_coordinate BETWEEN grid.x1 AND grid.x2
And crashes.y_coordinate BETWEEN grid.y1 AND grid.y2
WHERE crashes.yearCol IN(1989, 2007)
GROUP BY grid.ID) t
WHERE CrashCount_2007 < CrashCount_1989