【发布时间】:2021-06-15 12:57:40
【问题描述】:
- 最初我有这样的数据表
- 我想要的是,在使用 SQL 之后,SQL 会生成一个这样的表
- 刚学SQL,试过count()和group by,还没试过。
- TOTAL 列将根据 SIZE 和 NAME 列进行计数。
【问题讨论】:
【问题讨论】:
首先,您想使用DATE_FORMAT(date, "%Y-%m") 相应地格式化您的日期,以获得2021-03 的格式。然后你可以使用GROUP BY 和COUNT(*)。
SELECT
name,
size,
DATE_FORMAT(date, "%Y-%m") as month,
COUNT(*) as Total
FROM test
GROUP BY
name,
size,
DATE_FORMAT(date, "%Y-%m")
ORDER BY
COUNT(*) DESC,
name ASC;
| name | size | month | Total |
|---|---|---|---|
| A | 1 | 2021-03 | 2 |
| B | 2 | 2021-03 | 2 |
| A | 2 | 2021-03 | 1 |
| C | 3 | 2021-03 | 1 |
https://www.db-fiddle.com/f/7edM78Qhp8wLZ1JJZoE3bH/1 的工作示例
不清楚您希望返回结果的顺序,因此您可以更改ORDER BY 子句来自定义它。
【讨论】:
select Name,Size,Cast(date as date) as Date,count(1) from tablename 按名称、大小、演员(日期为日期)分组
【讨论】: