Nano Hash - криптовалюты, майнинг, программирование

Вычисление GPA в запросе

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

  1. Получите средний балл по каждому курсу.
  2. Умножьте каждое среднее значение на количество кредитных часов в указанном курсе.
  3. Добавьте результаты из 2.
  4. Разделите результат от 3 на общее количество кредитных часов.

У меня есть три соответствующие таблицы:

CREATE TABLE Student
(
SSN        INT(11),
SName    VARCHAR(25),
Major    VARCHAR(25),
PRIMARY KEY (SSN)
);

CREATE TABLE Course
(
CNO        INT(11),
CName    VARCHAR(3),
CreditHour    TINYINT(4),
PRIMARY KEY (CNO)
);

CREATE TABLE Grade
(
SSN        INT(11),
CNO        INT(11),
Grade        TINYINT(4)
);

К сожалению, скрипка SQL, похоже, не работает, поэтому я не могу сделать для этого скрипку. Как мне сделать оператор выбора, чтобы перечислить информацию о студенте с вычисляемым столбцом gpa? Каждый раз, когда я пытаюсь это сделать, я получаю раздутый набор вложенных подзапросов, например:

SELECT student.*, (total/hours) as gpa WHERE hours = 
   (SELECT SUM(course.creditHours) AS hours 
   FROM course, student, grade 
   WHERE course.cno = grade.cno 
   AND grade.ssn = student.ssn 
   GROUP BY course.cno) 
   AND total = (SELECT SUM(AVG(grade.grade)*course.creditHours) as total 
   FROM grade, course, student 
   WHERE grade.ssn = student.ssn 
   AND grade.cno = course.cno)

На самом деле это тоже не похоже на то, чтобы двигаться в правильном направлении. Что я должен делать, чтобы получить этот столбец?


  • Пожалуйста, отредактируйте свой вопрос с примерными данными и желаемыми результатами. Я не знаю, что, в частности, означает «Добавить результаты из 2». 03.07.2014
  • Добавить результат из 2 означает добавить результаты из предыдущего шага, но мне также нравятся правильные DDL. 03.07.2014
  • Просто чтобы уточнить, какое отношение таблица учеников имеет к этой проблеме? 03.07.2014

Ответы:


1

Если вам нужен средний балл по учащимся, я бы рассчитал следующим образом:

1 Умножьте количество кредитных часов для каждого курса на оценку и сложите произведение на каждого учащегося.

2 Разделите результат от 1 на общее количество кредитных часов на одного учащегося.

SELECT
    s.SSN,
    SUM(c.CreditHour * g.Grade) / SUM(c.CreditHour) Average_GPA
FROM Student s
INNER JOIN Grade g on s.SSN = g.SSN
INNER JOIN Course c on g.CNO = c.CNO
GROUP BY s.SSN;

Если вам просто нужен средневзвешенный средний балл по каждому курсу, можно использовать следующий запрос, используя шаги из вашего вопроса:

1.Получите среднюю оценку за каждый курс.

2. Умножьте каждое среднее значение на количество кредитных часов в указанном курсе.

3.Добавьте результаты из 2.

4. Разделите результат от 3 на общее количество кредитных часов.

SELECT
    c.CNO,
    SUM(c.CreditHour * average_gpa.GPA) / SUM(c.CreditHour) Weighted_Average_GPA
FROM Course c
INNER JOIN
(
SELECT
    CNO,
    AVG(g.Grade) GPA
FROM Grade
GROUP BY CNO
) average_gpa
ON c.CNO = average_gpa.CNO
GROUP BY c.CNO;
03.07.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..