MySQL: применение решения для ранжирования к более сложному оператору SELECT - PullRequest
0 голосов
/ 01 сентября 2011

Мне нужно добавить столбец ранга в оператор MySQL SELECT ниже:

   SELECT 
         cbn.neighborhoods    AS <code>neighborhoods</code>, 
         COUNT(*)             AS <code>offenses</code>, 
         na.neighborhoods, 
         TRUNCATE(
                   ((na.neighborhood_area_in_sq_meters /1000) * 0.000386102159), 2
                 ) AS <code>sq_miles</code>,<br>
         (COUNT(*) / ((na.neighborhood_area_in_sq_meters /1000) * 0.000386102159)) AS <code>offenses_per_sq_mile</code> 
         FROM 
             wp_crime_by_neighborhood  AS <code>cbn</code>, 
             wp_neighborhood_area      AS <code>na</code> 
         WHERE 
             cbn.offense = 'AWD' 
             AND 
             cbn.neighborhoods = na.neighborhoods
         GROUP BY 
             cbn.neighborhoods 
         ORDER BY 
             offenses_per_sq_mile DESC;

Таблицы следующие:

Имя таблицы: wp_crime_by_neighborhood
нид бигинт (11)
ccn int (10)
окрестности варчар (50)
reportdatetime datetime
результат tinyint (1)
десятичная широта (11,9)
десятичная долгота (10,8)
нарушение varchar (30)

Название таблицы: wp_neighborhood_area окрестность_индекса smallint (3)
окрестности варчар (50)
district_area_in_sq_meters int (10)

Я бы хотел оценивать на основе этого бита: (COUNT (*) / ((na.neighborhood_area_in_sq_meters / 1000) * 0.000386102159)) AS offenses_per_sq_mile.

Постер Stack Overflow, a1ex07, помог мне с еще одним вопросом ранжирования и предложил следующее решение:

SELECT t1.name, (SELECT COUNT(*) FROM table_1 t2 WHERE t2.score >
 t1.score) +1
 AS rnk
 FROM table_1 t1

Спасибо, a1ex07! Я не уверен, как применить вышеупомянутое решение в этом случае. В прошлом у меня был простой случай с оценками, это немного сложнее. Есть предложения?

...