mysql - 使用 Reg ex 的 SQL GROUP BY 名称
问题描述
我正在从我的表中选择数据并按列的长度排序,但我现在想分组为 3 个不同的“类别”
SELECT * FROM prices WHERE name LIKE 'Inclusive Minutes%' AND status = '' ORDER BY LENGTH(name);
3个不同的就是这样,每个都有多个(它们只是有不同的数字)
Inclusive Minutes [100 Mobile]
Inclusive Minutes [100 National]
Inclusive Minutes [100 National + 500 Mobile]
可以使用GROUP BY
这样的吗?
解决方案
您可以使用CASE
语句来选择 3 种类型并按它们分组:
SELECT
CASE
WHEN name LIKE '%[%National%Mobile]' THEN 'National + Mobile'
WHEN name LIKE '%[%Mobile]' THEN 'Mobile'
WHEN name LIKE '%[%National]' THEN 'National'
END AS type,
<aggregated columns here>
FROM prices
WHERE name LIKE 'Inclusive Minutes%' AND status = ''
GROUP BY type
ORDER BY LENGTH(type);
在CASE
语句之后,您可以放置所需的聚合列。
推荐阅读
- python - Pyspark:根据条件修改列
- java - 如何在没有数组的情况下使用 Java 中的 txt 文件阅读器来做一个随机短语生成器
- python-3.x - 如何实现滑块小部件,matplotlib
- regex - 将一列中的值替换为另一列中的值
- python - 在 sqlalchemy 中使用 query.all() 方法时出错
- angular - 如何连接reducers逻辑
- mysql - 如何在MYSQL中获取每个月的最大日期
- c++ - 无法在 C++ 程序中包含 gstreamer
- c# - Unity - NuGet 包被自动删除
- session - 使用 django-channels 开发的聊天机器人,无法保存会话特定的聊天对话日志