mysql - 如何按sql查询排序和分组?

标签 mysql

我有数据

id Date      CatId  itemid itemname price
1  10/5/2019  1         1      ABC        20
2  10/5/2019  1         2      XYZ        30
3  10/5/2019  2         1      ABC        20
4  10/5/2019  3         1      ABC        20  

5  11/5/2019  1         2      XYZ        30
6  11/5/2019  2         1      ABC        20
7  11/5/2019  2         3      PQR        40

8  12/5/2019  3         1      ABC        20
9  12/5/2019  3         2      XYZ        30 
10  12/5/2019  1         2      XYZ        30
11  12/5/2019  2         1      ABC        20

预期结果数据

date            CatId   toal 
 10/5/2019      1           50
 10/5/2019      2           20
 10/5/2019      3           20

  11/5/2019     1       30
  11/5/2019     2       60
  12/5/2019     1       30
  12/5/2019     2       20
  12/5/2019     3       50

我希望结果按日期排序,在价格总和后按 catid 排序,

我已经尝试应用多个查询,但得到了精确的解决方案。我花了这么多时间。

我试过下面的查询

SELECT * FROM (SELECT * FROM `table`  ORDER BY `date` DESC) as tbl
 GROUP BY tbl.`catid`

SELECT *
FROM `table` 
GROUP BY `date` ORDER BY `date` DESC

SELECT * 
FROM (
    SELECT * FROM `table`  
    ORDER BY `date` DESC
) AS sub
GROUP BY `catid` ORDER BY `date` DESC

最佳答案

您可以用于排序依据和分组依据的列可以不同

可以直接用group by和sum

select date, catid, sum(price)
from my_table 
group by date, catid
order by date, sum(price), catid

关于mysql - 如何按sql查询排序和分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56226145/

相关文章:

MySQL 表导出为 HTML

Mysql随时间的分区

javascript - 用jsp更新数据库

mysql - 如何在 MySQL 中启用 FEDERATED 引擎?

mysql - ADODB - VBA - MySQL - 显示表语法

mysql - 使用 drupal 设置关系数据库

php - 无法使用 PHP 连接到 2 个不同的远程数据库

mysql - 使用日期作为引用对列重新编号

mysql - 我可以阻止 MySQL 索引特定值吗?

php - Mysqli 为非动态变量准备的语句