#sql #sqlite
#sql #sqlite
Вопрос:
У меня есть следующие данные из таблицы fruits:
Fruits | Qty.
Grapes | 5
Apple | 3
Oranges| 2
Bananas| 1
Kiwi | 1
Я хочу сгруппировать все фрукты, у которых есть кол-во. <= 2. Желаемый результат должен выглядеть так:
Fruits | Qty.
Grapes | 5
Apple | 3
Other | 4
Какой запрос в SQL для получения желаемого результата?
Я попытался использовать оператор CASE для пометки строк, а затем использовать COUNT для подсчета группы, но я не понимаю, как добавить результат подсчета ‘other’ обратно в таблицу, которую я запрашиваю.
Ответ №1:
Вот один из способов добиться этого:
SELECT Fruits, Qty FROM fruits WHERE Qty > 2
UNION ALL
SELECT "Other", SUM(Qty) from fruits where Qty <= 2
Ответ №2:
Разрешает ли sqlite группировать по 1? Если это так, это тоже работает…
select
case
when qty > 2 then fruits
else 'Other'
end fruits,
sum(qty) as qty
from fruits
group by 1
Комментарии:
1. Спасибо за ответ. Да, sqlite позволяет ГРУППИРОВАТЬ ПО. Однако, когда я попробовал ваш код, результатом стало создание столбца с именем fruits_1, который классифицировал фрукты на основе их количества (кол-во) :/