Исключить те же значения и конкретный запрос набора правил - PullRequest
0 голосов
/ 04 февраля 2019

Прошло много времени с тех пор, как я работал с базами данных и не могу сейчас обдумать, как это сделать, поэтому я был бы очень признателен, если бы кто-нибудь смог мне помочь с этими двумя вопросами / запросами.

  1. Я хочу отобразить идентификаторы, которые были по крайней мере в 2 РАЗНЫХ зонах (исключая идентификаторы, которые были ТОЛЬКО в той же зоне).

  2. Я хочу отобразить идентификаторы, которые сначала были в zone1, затем zone2, затем zone3 (нужно посмотреть время здесь).

Оригинал:

ID    ZONE    TIME 
"01"  "ZO1"   "20190110_111326"
"01"  "ZO1"   "20190110_111355" 
"01"  "ZO1"   "20190110_111529"
"02"  "ZO3"   "20190110_112527"
"02"  "ZO3"   "20190110_112559"
"06"  "ZO1"   "20190114_082144" 
"06"  "ZO2"   "20190114_082153"
"06"  "ZO3"   "20190114_082210" 
"07"  "ZO3"   "20190114_131034"
"07"  "ZO2"   "20190114_131058"

1.

ID      ZONE    TIME
"06"    "ZO1"   "20190114_082144"
"06"    "ZO2"   "20190114_082153"
"06"    "ZO3"   "20190114_082210"
"07"    "ZO3"   "20190114_131034"
"07"    "ZO2"   "20190114_131058"

2.

ID      ZONE    TIME
"06"    "ZO1"   "20190114_082144"
"06"    "ZO2"   "20190114_082153"
"06"    "ZO3"   "20190114_082210"

1 Ответ

0 голосов
/ 04 февраля 2019

ОТВЕТИТЬ НА # 1

select * from table where id in 
(
select id from
(
   select id, zone
   from table 
   group by id, zone
)
group by id 
having count(1) > 1

)

ОТВЕТ НА # 2

select t2.zone, t2.time, max(t2.id) as id from 
(select zone, min(time) minTime from table group by zone ) t1
join 
(select id, zone, time from table) t2 on t1.zone = t2.zone and t1.minTime = t2.time
group by t2.zone, t2.time

Обратите внимание на причину, по которой мы получили максимальный идентификатор для второго запроса, это b / c, может быть большечем 1 одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...