#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;
Смотрите демонстрацию.