Я создал функцию анализа таблицы результатов учащихся. Цель: найти наивысший средний результат, сгруппированный по типу контента. Например:C#: оператор выбора не отображается правильный результат
S_Id ContentType Result
1 T 50
1 V 70
1 G 30
1 G 40
1 V 60
Выход, который мне нужен, равен V, поскольку среднее значение V является самым высоким.
Это мой код, но он не отображает правильный результат: Мой выход отображает пятую строку в таблице.
public string analyzeResultTable(string studentId)
{
string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["AHSConnection"].ToString();
DataSet ds = new DataSet();
DataSet dsAns = new DataSet();
string BestPrefrence = "";
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
MySqlCommand cmd2 =
new MySqlCommand(
"Select ContentType, MAX(avgContent) from (select ContentType, AVG(result) as avgContent from dopractice where S_Id='" +
studentId + "' GROUP BY ContentType) AS T", conn);
MySqlDataAdapter da = new MySqlDataAdapter(cmd2);
da.Fill(ds);
conn.Close();
}
if (ds.Tables[0].Rows.Count > 0)
{
BestPrefrence = ds.Tables[0].Rows[0]["ContentType"].ToString();
}
return BestPrefrence;
}
Это не ясно, что это есть * что-то * сделать с C# (хотя вы должны научиться использовать параметризованные SQL). Вы пробовали сделать этот запрос непосредственно в MySQL? –
У меня нет хорошего опыта написания операторов MySql в C# – John
Но проблема не в C# - это с SQL. Сначала запустите свой запрос в инструменте MySQL, а затем переместите его на C# ... и когда вы это сделаете, используйте параметризованный SQL. (Если вы не знаете, как это сделать, просто найдите «параметризованный sql mysql C#», и вы найдете много результатов. –