mysql在两个级别排序数据可能吗?

时间:2014-12-12 10:45:51

标签: mysql

我试图从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循环脚本: - ))

提前感谢任何提示(即使提示“不可能”)

1 个答案:

答案 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中的结果。