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;