mysql - MYSQL - GROUP BY 和 COUNT 查询
问题描述
我有一个包含这样行的数据库
title category
-----------------------
super widget 1
ultimate widget 1
regular widget 1
happy widget 2
sad widget 2
ugly widget 3
pretty widget 3
使用下面的查询,我得到了一个很好的列表,其中包含所有行的标题,如“小部件”以及每个类别中有多少行的计数。所以结果看起来像
catid itemcount
-------------------
1 3
2 2
3 2
SELECT catid, COUNT(*) AS 'itemcount' FROM allwidgets
WHERE title like '%widget%' GROUP BY catid;
我需要改变这个。我想最终得到一个列表,显示有多少属于第 3 类以及有多少属于所有其他类别,所以结果是
catid itemcount
------------------
3 2
allothers 5
我可以用 2 个查询来完成,一个得到完整计数,另一个得到 catid 3 个计数,然后减去它们,但是一个查询可以吗?
解决方案
你可以使用CASE
表达式:
SELECT CASE WHEN catid = 3 THEN '3' ELSE 'allothers' END AS catid,COUNT(*) AS itemcount
FROM allwidgets
WHERE title like '%widget%'
GROUP BY CASE WHEN catid = 3 THEN '3' ELSE 'allothers' END;
推荐阅读
- javascript - 围绕用户点击位置居中图像
- vb.net - 我怎样才能尽可能多地运行 Timer?[Vb.Net]
- reactjs - 可编辑表反应
- python-3.x - 收件人电子邮件在 django 中没有收到任何消息
- python - 减去数据框中的两列,在循环中创建第三列
- c++ - 将 IDXGIAdapter1 转换为 IDXGIAdapter4 时出现链接错误 [DirectX 和 WinRT/C++]
- python - 使用 beautifulsoup 在不同选项卡中打开产品页面以在亚马逊中输入搜索结果
- android - 更新 Android Studio 后,Ionic 5 应用程序不再构建
- python - 对来自 RabbitMQ 的 N 条消息进行重复数据删除,时间相同但冲突操作不同
- docker - Docker 访问构建上下文之外的路径以进行 COPY