SQL 按内部连接和计数分组
SQL GROUP BY INNER JOIN AND COUNT
我是 MySQL 的新手。我在生成查询时遇到问题。
所以基本上我有两个 table:device_master_data、device_logs。
device_master_data:
device_id
device_seral_number
对于任何 device_id 都有唯一的 device_serial_number。
device_logs:
device_id
log_date
city_id
所以在这个 table 中有多个条目 device_id。
例如:
device_id 1 有 5 个条目,device_id 2
有 10 个条目
目标:
从 device_logs table 中获得出现次数最多的 TOP 20 device_id
然后得到device_id.
对应的device_serial_number
结果:
count
device_serial_number
请任何人帮助它真的很有帮助
您可以按如下方式使用分组方式:
Select m.device_id, m.device_serial_number, count(*) as cnt
From device_master_data m join device_logs l on l.device_id = m.device_id
Group by m.device_id, m.device_serial_number
Order by count(*) desc
Limit 20
使用这个
SELECT COUNT(dl.device_id) as count, dmd.device_serial_number
FROM device_logs dl JOIN
device_master_data dmd
ON dl.device_id = dmd.device_id
GROUP BY d1.device_serial_number
ORDER BY count DESC
LIMIT 20;
我是 MySQL 的新手。我在生成查询时遇到问题。
所以基本上我有两个 table:device_master_data、device_logs。
device_master_data:
device_id | device_seral_number |
---|
对于任何 device_id 都有唯一的 device_serial_number。
device_logs:
device_id | log_date | city_id |
---|
所以在这个 table 中有多个条目 device_id。
例如: device_id 1 有 5 个条目,device_id 2
有 10 个条目目标: 从 device_logs table 中获得出现次数最多的 TOP 20 device_id 然后得到device_id.
对应的device_serial_number结果:
count | device_serial_number |
---|
请任何人帮助它真的很有帮助
您可以按如下方式使用分组方式:
Select m.device_id, m.device_serial_number, count(*) as cnt
From device_master_data m join device_logs l on l.device_id = m.device_id
Group by m.device_id, m.device_serial_number
Order by count(*) desc
Limit 20
使用这个
SELECT COUNT(dl.device_id) as count, dmd.device_serial_number
FROM device_logs dl JOIN
device_master_data dmd
ON dl.device_id = dmd.device_id
GROUP BY d1.device_serial_number
ORDER BY count DESC
LIMIT 20;