sql - Mysql查询以便更好地排序结果

标签 sql mysql pivot

我正在使用的 mysql 表有一个结构:

   id    |    type   |   date
--------------------------------
  101    |     1     | 2011-02-08
  102    |     2     | 2011-02-08
  103    |     2     | 2011-02-08
  104    |     2     | 2011-02-07
  105    |     1     | 2011-02-07
  105    |     1     | 2011-02-07

我想要做的是创建一个查询,该查询将给出以下结果:

  total  type 1  |  total  type 2  |   date   
------------------------------------------------
       1         |        2        | 2011-02-08
       2         |        1        | 2011-02-07

我尝试了以下查询,但没有得到所需的结果

SELECT count(DISTINCT id) as total, date, type FROM my_table WHERE type !='0' GROUP BY date, type ORDER BY date DESC

我怎样才能做到这一点? 感谢大家的建议

最佳答案

用途:

  SELECT t.date,
         SUM(CASE WHEN t.type = 1 THEN 1 ELSE 0 END) AS total_type_1,
         SUM(CASE WHEN t.type = 2 THEN 1 ELSE 0 END) AS total_type_2
    FROM YOUR_TABLE t
   WHERE t.type != 0
GROUP BY t.date
ORDER BY t.date DESC

我假设 type 列是数字,而不是像单引号所示的基于字符串。如果情况并非如此,请进行更改以适应。

关于sql - Mysql查询以便更好地排序结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4938695/

相关文章:

python - 将 3D pandas 数据帧转换为 2d

mysql - 如何根据mysql中的周数透视记录?

sql - 仅根据给定的 OrderId 获取记录

sql - PostgreSQL 重复键值违反唯一约束,同时使用冲突时不执行插入操作

mysql - 如何进行mysql搜索以排除重复记录

javascript - 无法在选择选项中显示查询结果

javascript - 使用 $_POST[] 调节 JavaScript 开关

sql - 如何知道何时使用索引以及使用哪种类型?

sql - 需要没有临时表的行组计数

sql - 如何将两个查询(全部联合)合并为一行?