给出一个假设的查询,例如:
SELECT COUNT(*)
FROM subscriptions
GROUP by plan_type
Run Code Online (Sandbox Code Playgroud)
和下面的表类似:
+----+-----------------------+-------------+--+
| id | plan_type | customer_id | |
+----+-----------------------+-------------+--+
| 1 | gold_2017 | 523 | |
| 2 | gold_2016_recurring | 2300 | |
| 3 | silver_2016 | 234 | |
| 4 | silver_2017_recurring | 2593 | |
| 5 | platinum_recurring | 4123 | |
+----+-----------------------+-------------+--+
Run Code Online (Sandbox Code Playgroud)
期望的结果:
+-------+----------+
| count | type |
+-------+----------+
| 2 | gold |
| 2 | silver |
| 1 | platinum |
+-------+----------+
Run Code Online (Sandbox Code Playgroud)
有没有办法使用GROUP BY和LIKE语句对这些条目进行分组(LIKE"silver",LIKE"gold",LIKE"platinum"等)?
Gor*_*off 12
你可以使用case:
SELECT (CASE WHEN plan_type LIKE 'silver%' THEN 'silver'
WHEN plan_type LIKE 'gold%' THEN 'gold'
WHEN plan_type LIKE 'platinum%' THEN 'platinum'
END) as plan_grp, COUNT(*)
FROM subscriptions
GROUP by (CASE WHEN plan_type LIKE 'silver%' THEN 'silver'
WHEN plan_type LIKE 'gold%' THEN 'gold'
WHEN plan_type LIKE 'platinum%' THEN 'platinum'
END);
Run Code Online (Sandbox Code Playgroud)
某些数据库允许您在中使用列别名GROUP BY.
| 归档时间: |
|
| 查看次数: |
5252 次 |
| 最近记录: |