0

我的nycgrid表具有以下架构id,x1,x2,y1,y2。它看起来像以下示例:

22,910000,920000,120000,130000
67,930000,940000,170000,180000
171,980000,990000,210000,220000

另一个表nyccrash包含元组,其中包含有关 1989 年至 2007 年发生的车祸的信息(总共 12000 条记录)。第一个属性是crash_year,然后是事故类型、天气状况...等,并以纽约市发生车祸的x_coordinatey_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年少。nycgrid表中有大约 100 行。我只需要那些在 2007 年发生的事故少于 1989 年的行。

第二部分可能稍微容易一些,我如何找到每个方格 (nycgrid.id) 的车祸次数?换句话说,如何显示每个网格 id 上发生了多少次崩溃?每个崩溃都有关联的 x 和 y 坐标。每个网格都有一个构成正方形的 x1-x2-y1-y2 坐标。

4

1 回答 1

2

RBarryYoung对您最后一个问题的回答开始,我们只是使用年份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
于 2012-04-05T21:29:08.457 回答