Вы можете решить свою проблему, сначала получив количество rssi
значений для пары маяк / приемник, например:
SELECT beacon, receiver, rssi, COUNT(*) as occurs
FROM readings
GROUP BY beacon, receiver, rssi
Затем, чтобы найти режим для каждой пары маяк / приемник, вы можете использовать этов качестве подзапроса, присоединяя его к списку максимальных occurs
значений:
SELECT beacon, receiver, rssi, occurs
FROM (SELECT beacon, receiver, rssi, COUNT(*) as occurs
FROM readings
GROUP BY beacon, receiver, rssi) r1
JOIN (SELECT beacon, receiver, rssi, MAX(occurs)
FROM (SELECT beacon, receiver, rssi, COUNT(*) as occurs
FROM readings
GROUP BY beacon, receiver, rssi) r2
GROUP BY beacon, receiver, rssi) r3
ON r3.beacon = r1.beacon AND r3.receiver = r1.receiver AND r3.rssi = r1.rssi
Обратите внимание, что при наличии нескольких значений режима для пары маяк / приемник вы получите все из них.Вы можете использовать MAX(rssi)
в начальном выборе и GROUP BY beacon, receiver
, чтобы ограничить результат одним значением rssi
на пару, то есть
SELECT beacon, receiver, MAX(rssi), occurs
FROM (SELECT beacon, receiver, rssi, COUNT(*) as occurs
FROM readings
GROUP BY beacon, receiver, rssi) r1
JOIN (SELECT beacon, receiver, rssi, MAX(occurs)
FROM (SELECT beacon, receiver, rssi, COUNT(*) as occurs
FROM readings
GROUP BY beacon, receiver, rssi) r2
GROUP BY beacon, receiver, rssi) r3
ON r3.beacon = r1.beacon AND r3.receiver = r1.receiver AND r3.rssi = r1.rssi
GROUP BY beacon, receiver