【发布时间】:2017-04-15 18:33:43
【问题描述】:
我有一张像这样的表:
# ITEM, operating_system, error_code
B01NCUBH43, mac, ['E141202', 'E20012']
B01N4MN9PL, mac, ['E141202', 'E20012']
B06XKH8NXM, win, ['E141202', 'E20012']
B01N3AZUH8, mac, ['E00101', 'E141202']
B06XRRQ8QV, win, ['E00101', 'E141202']
B01NAZ2I1H, mac, ['E00101', 'E141202']
B06XKHJ39Q, mac, ['E141202', 'E20012']
我需要找到每个操作系统的每个错误代码的计数。我写了这个 sql,它给了我正确的答案。但是,它不是一个通用且可扩展的解决方案,因为 error_codes 是硬编码的,将来可能会有新的错误代码。
SELECT Platform,
E141202,
E20012
from
(SELECT
(CASE WHEN operating_system = 'Win'
THEN 'Windows'
WHEN operating_system = 'Mac'
THEN 'Mac'
END) Platform,
COUNT(CASE WHEN tag like 'liveItem' THEN ITEM END) total_runs,
COUNT(CASE WHEN error_code like '%E141202%' THEN ITEM END) E141202,
COUNT(CASE WHEN error_code like '%E20012%' THEN ITEM END) E20012
FROM CrossPlatformYield where tag = 'liveItem'
GROUP BY Platform)a;
有没有办法获取唯一错误代码列表并使用它执行上述计算以得出每个操作系统的每个错误代码的计数?理想情况下,我不想使用 MySQL 查询来完成它。在最坏的情况下,我可以写一个脚本。
【问题讨论】: