SQL — Как подсчитать значение и добавить его обратно в столбец в запросе

#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, который классифицировал фрукты на основе их количества (кол-во) :/