Sql Query Group диапазон чисел с минимумами и максимумами - PullRequest
0 голосов
/ 08 октября 2009

У меня есть таблица, которая выглядит примерно так:

street_id | address_number | address_direction | address_street | address_type ...
----------------------------------------------------------------------------------
1         | 121            | W                 | Fake           | St
1         | 131            | W                 | Fake           | St
1         | 200            | W                 | Fake           | St
2         | 321            | N                 | Fake           | St
2         | 131            | N                 | Fake           | St
2         | 500            | N                 | Fake           | St

Может ли кто-нибудь помочь мне с запросом, который помог бы мне отобразить данные, как показано ниже?

street_id | address_low_range | address_high_range | address_direction | address_street | address_type ...
----------------------------------------------------------------------------------
1         |  121              | 200                | W                 | Fake           | St
2         |  131              | 500                | N                 | Fake           | St   

Заранее спасибо

Ответы [ 5 ]

2 голосов
/ 08 октября 2009

Вы можете использовать Min (address_number) и Max (address_number), чтобы выбрать низкие и высокие диапазоны, затем сгруппировать по street_id, address_direction, address_street, address_type:

SELECT 
street_id, 
Min(address_number) as address_low_range,
Max(address_number) as address_high_range,
address_direction, 
address_street, 
address_type
FROM table_name
GROUP BY street_id, address_direction, address_street, address_type
2 голосов
/ 08 октября 2009
select
       street_id,
       direction,
       min(address_number) as address_low_range,
       max(address_number) as address_high_range
       address_street,
       address_type
from mytable
group by address_id, address_street, direction;

Кстати, почему address_street и address_type в вашей таблице, когда предположительно, это то, что street_id ссылается?

1 голос
/ 08 октября 2009

Используйте агрегатные функции MIN() и MAX() для столбцов, для которых требуется минимальное или максимальное значение. Обязательно включите другие столбцы в предложение GROUP BY.

1 голос
/ 08 октября 2009

Можете ли вы проверить этот запрос

    select street_id, MIN(address_number) add_low,
MAX(address_number) add_high FROM your_table
Group by street_id
1 голос
/ 08 октября 2009

с макушки головы:

select street_id, min(address_number), max(address_number), address_direction
from addresses
group by street_id, address_direction
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...