[英]SQL: Group by multiple fields
我需要選擇一些值,對它們進行分組並按多個字段排序。 這是我的小提琴: http ://sqlfiddle.com/#!2/ a80eb/3
我需要實現的是從表packet_data
為給定的client_mac
值和drone_id
列中的每個不同項選擇drone_id
。 此行應包含client_mac
, drone_id
的值以及給定drone_id
和client_mac
組合的antenna_signal
列的最常值。
列drone_id
是表drones
的外鍵,此表中有一個列map_id
。 我需要從只關注那些行packet_data
具有一定表map_id
在drones
表。
我想要的結果應該是:
CLIENT_MAC DRONE_ID ANTENNA_SIGNAL
3c:77:e6:17:9d:1b 1 -37
3c:77:e6:17:9d:1b 2 -57
我當前的SQL查詢是:
SELECT `packet_data`.`client_mac`,
`packet_data`.`drone_id`,
`packet_data`.`antenna_signal`,
count(*) AS `count`
FROM `packet_data`
JOIN `drones` ON `packet_data`.`drone_id`=`drones`.`custom_id`
WHERE `drones`.`map_id` = 11
AND `client_mac`="3c:77:e6:17:9d:1b"
GROUP BY drone_id,
`packet_data`.`antenna_signal`
ORDER BY `packet_data`.`drone_id`,
count(*) DESC
而我目前的結果是:
CLIENT_MAC DRONE_ID ANTENNA_SIGNAL
3c:77:e6:17:9d:1b 1 -37
3c:77:e6:17:9d:1b 1 -36
3c:77:e6:17:9d:1b 2 -57
3c:77:e6:17:9d:1b 2 -56
您可以使用不太好的相關子查詢(在子查詢上)獲得所需的結果。 我不知道如何使用大量數據進行擴展:
SELECT
-- the desired columns
client_mac,
drone_id,
antenna_signal,
amount -- I added this so I could easily check the result
FROM (
-- give me the count of every value of the antenna_signal column
-- for each combination of client_mac, drone_id and antenna_signal
SELECT
client_mac,
antenna_signal,
drone_id,
COUNT(antenna_signal) AS amount
FROM
packet_data
WHERE
client_mac = '3c:77:e6:17:9d:1b'
GROUP BY
client_mac,
drone_id,
antenna_signal
) as1
WHERE
-- but I want only those rows with the highest count of equal antenna_signal
-- values per client_mac and drone_id
amount = (
SELECT
MAX(as2.amount)
FROM (
SELECT
pd2.client_mac,
pd2.antenna_signal,
pd2.drone_id,
COUNT(pd2.antenna_signal) AS amount
FROM
packet_data pd2
WHERE
client_mac = '3c:77:e6:17:9d:1b'
GROUP BY
client_mac,
drone_id,
antenna_signal
) as2
WHERE
as1.client_mac = as2.client_mac AND as1.drone_id = as2.drone_id
);
如果需要,加入其他表格應該不會太困難。 但是,如果有兩個對同一個client_mac和drone_id具有相同計數的antenna_signals,則會顯示兩行。 在更新的小提琴http://sqlfiddle.com/#!2/a80eb/80中查看
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.