某智能家居服务商需要监控用户家中各类设备的电力消耗情况。系统需要定期分析每台设备的月度用电量,找出那些比同类设备(如所有“空调”或所有“热水器”)平均用电量更高的“高耗能设备”,并对这些设备生成简报,以便提醒用户检查设备是否老化或存在漏电风险。
表结构和字段说明:
-
表1:smart_devices(智能设备信息表)
- device_id(varchar): 设备唯一标识符,主键。
- device_name(varchar): 设备名称(如 "Living Room AC")。
- category(varchar): 设备类别(如 "HVAC", "Lighting", "Kitchen")。
- location(varchar): 设备所在具体位置(如 "Living Room", "Master Bedroom")。
- install_date(date): 设备安装日期。
-
表2:energy_logs(能耗日志表)
- log_id(int): 日志ID,主键。
- device_id(varchar): 设备ID,逻辑关联smart_devices.device_id。
- usage_kwh(decimal): 该时段消耗的电量(千瓦时),保留两位小数。
- log_timestamp(datetime): 记录日志的具体时间点。
- status(varchar): 设备状态("active", "standby", "error")。
问题
请编写SQL查询,找出在 2025年1月(2025-01-01 至 2025-01-31) 期间,总用电量 严格大于 其所属设备类别(category)下所有设备该月平均总用电量的设备。
查询结果要求:
- device_name:设备名称。
- location_code:位置代码。要求将location字段中的所有空格替换为下划线_,并将结果转换为全大写(例如 "Living Room" 变为 "LIVING_ROOM")。
- total_usage:该设备2025年1月的总用电量,结果保留2位小数(四舍五入)。
-
efficiency_level:能效评级。根据该设备的总用电量判断:
- 如果total_usage>= 50.00,显示 'High Load'
- 如果total_usage< 50.00,显示 'Normal'
- 结果排序:优先按total_usage从高到低排序;如果用电量相同,则按device_id升序排序。



