我试图从mysql表中分析一些日期。
数据代表接听电话,每一行代表一次电话
category purpose
cars question
bikes question
cars question
cars complaints
scooters question
bikes complaints
现在为了绘图我需要数据看起来像这样
category cat_count question complaints
cars 3 2 1
bikes 2 1 1
scooters 1 1
我发现我可以通过使用类似的东西对一个字段进行排序和计数
SELECT category, count(*) FROM stat GROUP BY category ORDER BY count(*) desc;
会给我
category count
cars 3
bikes 2
scooters 1
但是如何将目的计数添加到该输出?
我通常会编写一个php或bash脚本,但如果它可以在mysql中执行,我宁愿这样做,而不是在1年内没有人会理解的3循环脚本: - ))
提前感谢任何提示(即使提示“不可能”)
答案 0 :(得分:4)
你可以这样做:
SELECT category, count(*) as cat_count,
SUM(CASE WHEN purpose='question' THEN 1 ELSE 0 END) as question,
SUM(CASE WHEN purpose='complaints' THEN 1 ELSE 0 END) as complaints
FROM stat
GROUP BY category
ORDER BY count(*) desc;
<强>结果:强>
CATEGORY CAT_COUNT QUESTION COMPLAINTS
cars 3 2 1
bikes 2 1 1
scooters 1 1 0
请参阅SQL Fiddle中的结果。