SQL 查询 分类统计

发布于 2024-09-21 17:11:59 字数 2380 浏览 9 评论 0

示例表 1

yearmonthprice
2019150
2019230
2019340
2019470
2020135
2020235
2020344
2020467
/* Insert 语句 */
INSERT INTO ``(`year`, `month`, `price`) VALUES ('2019', '1', 50);
INSERT INTO ``(`year`, `month`, `price`) VALUES ('2019', '2', 30);
INSERT INTO ``(`year`, `month`, `price`) VALUES ('2019', '3', 40);
INSERT INTO ``(`year`, `month`, `price`) VALUES ('2019', '4', 70);
INSERT INTO ``(`year`, `month`, `price`) VALUES ('2020', '1', 35);
INSERT INTO ``(`year`, `month`, `price`) VALUES ('2020', '2', 35);
INSERT INTO ``(`year`, `month`, `price`) VALUES ('2020', '3', 44);
INSERT INTO ``(`year`, `month`, `price`) VALUES ('2020', '4', 67);
INSERT INTO ``(`year`, `month`, `price`) VALUES ('2019', '4', 67);

分类统计

SELECT year,
	COUNT( `month` = '1' OR NULL) AS 'm1',
	COUNT( `month` = '2' OR NULL) AS 'm2',
	COUNT( `month` = '3' OR NULL) AS 'm3',
	COUNT( `month` = '4' OR NULL) AS 'm4',
price
FROM `表 1` GROUP BY `year`

结果

yearm1m2m3m4price
2019111250
2020111135

分类求和统计

/* 涉及行列如何互换 */
SELECT year,
    sum(case `month` when '1' then `price` else 0 end) as 'm1',
    sum(case `month` when '2' then `price` else 0 end) as  'm2',
    sum(case `month` when '3' then `price` else 0 end) as 'm3',
sum(price) as price_sum
FROM `表 1` GROUP BY `year`;

结果

yearm1m2m3price_sum
2019503040257
2020353544181

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

鯉魚旗

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文