Разделение таблицы по группам SQL

#sql #sqlite

Вопрос:

У меня есть список предприятий со множеством столбцов,но это самые важные из них:

 | name     |stars | review_count |
| -------- | -----| -----------  |
| First    | 3.0  |        1235  |
| Second   | 4.4  |          45  |
| third    | 2.5  |         123  |    
 

Так что хочу оценить его по таким звездным значениям, как

 |stars  | review_count |
| ----- |  ----------- |
|  < 3  |         1358 |
|  >=3  |           45 |
 

Я пробовал с

 select sum(review_count), stars
from business 
group by (2<=stars and stars <3)  or stars >3
 

Но это не сработало.

Комментарии:

1. Это SQL (заголовок) или S(тег)? Если SQL, пожалуйста, пометьте свой SQL-движок

2. В своем вопросе вы упоминаете колонку stars , но в коде, который я вижу review_count . Кроме того, что вы подразумеваете под любым ? Опубликуйте примеры данных и ожидаемые результаты, чтобы уточнить, чего вы хотите.

3. Хорошо, я все изменю, чтобы было понятнее. тай

4. Результат для <3 должен быть 123, а для >=3 должен быть 1280

Ответ №1:

Вы можете использовать CASE выражение для создания 2 групп и сгруппировать их по этому:

 SELECT CASE WHEN stars < 3 THEN '<3' ELSE '>=3' END stars, 
       SUM(review_count) review_count 
FROM business 
GROUP BY 1;
 

Смотрите демонстрацию.