WedX - журнал о программировании и компьютерных науках

SQL добавляет значения на основе условий, а затем ныряет две суммы

У меня есть одна таблица с именем Data.

Data Year Type Value 1 1 5 1 1 10 1 2 15 1 2 25 1 1 15 1 2 20 1 1 5 2 2 10 2 2 45 2 2 10 2 1 20 2 2 5 2 1 15 2 1 0

Я хотел бы за год суммировать все, что относится к типу 1 (sum1), и суммировать все, что относится к типу 2 (sum2), а затем разделить сумму1 на сумму2 и сгруппировать результат по годам. Для первого года это будет сумма1=(5+10+15+5=35), сумма2=(15+25+20=60), сумма1(35)/сумма(60)=0,58333. Полный вывод будет

Year Value 1 0.5833 2 0.5

Я пробовал следующий запрос, но он не работает. SELECT d.Year, a.Sum1/b.Sum2 FROM Data d, (SELECT Data.Year, SUM(Value) AS Sum1 FROM Data WHERE Type=1 GROUP BY Data.Year) a, (SELECT Data.Year, SUM(Value) AS Sum2 FROM Data WHERE Type=2 GROUP BY Data.Year) b GROUP BY d.Year

Когда я запускаю запрос, я получаю You tried to execute a query that does not include the specified expression 'a.Sum1/b.Sum2' as part of an aggregate function. Что я делаю неправильно в своем запросе?

28.07.2015

  • есть только тип 1 и тип 2. в вашем запросе упоминается тип 4. это опечатка? 28.07.2015
  • Да, это опечатка, я обновил пост сейчас. 28.07.2015

Ответы:


1

Вы используете функцию использования IIF

select Year,sum(iif(Type=1, value, 0))/sum(iif(Type=4, value, 0))
from data
GROUP BY Year
28.07.2015
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]