我希望从数据库中提取的数据显示为此
Total_marks | No of Students
10-20 | 2
20-30 | 1
30-40 | 3
so on
示例数据:
barcode(student id) | Total_marks
200056 | 70
200071 | 51
200086 | 40
200301 | 56
200317 | 73
200316 | 35
200217 | 42
200104 | 80
200015 | 63
我试过了:
SELECT
count(*) as no_of_students,
CASE
WHEN Total_marks BETWEEN 10 and 20 THEN '1'
WHEN Total_marks BETWEEN 20 and 30 THEN '2'
WHEN Total_marks BETWEEN 30 and 40 THEN '3'
WHEN Total_marks BETWEEN 40 and 50 THEN '4'
WHEN Total_marks BETWEEN 50 and 60 THEN '5'
WHEN Total_marks BETWEEN 60 and 70 THEN '6'
WHEN Total_marks BETWEEN 70 and 80 THEN '7'
WHEN Total_marks BETWEEN 80 and 90 THEN '8'
WHEN Total_marks BETWEEN 90 and 100 THEN '9'
END AS intervals
FROM
[database]
WHERE
0 - 10 = '0' and 10 - 20 = '1' and 20 - 30 = '2' and 30 - 40 = '3' and 40 - 50 = '4' and 50 - 60 = '5' and 60 - 70 = '6' and 70 -80 = '7' and 80 - 90 = '8' and 90 - 100 = '9' GROUP BY Total_marks
但我只是得到了列标题而没有数据。如何正确地制定查询。此外,我希望它在ASP.NET中显示为图表。代码在哪里:
{
connection.Open();
SqlCommand cmd = new SqlCommand("Query", connection);
cmd.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable ChartData = ds.Tables[0];
//storing total rows count to loop on each Record
string[] XPointMember = new string[ChartData.Rows.Count];
Chart1.ChartAreas[0].AxisX.IsStartedFromZero = true;
decimal[] YPointMember = new decimal[ChartData.Rows.Count];
int totalrows = ChartData.Rows.Count;
if (totalrows > 0)
{
for (int count = 0; count < ChartData.Rows.Count; count++)
{
//storing Values for X axis
XPointMember[count] = ChartData.Rows[count]["Number_of_students"].ToString();
//storing values for Y Axis
YPointMember[count] = Convert.ToDecimal(ChartData.Rows[count]["Total_accumulated_score_achieved" + "%"]);
connection.Close();
}
答案 0 :(得分:1)
试试这个
create table StudentData
(
StudentID INT,
Total_Marks INT
)
insert into StudentData values(1,10)
insert into StudentData values(2,30)
insert into StudentData values(3,10)
insert into StudentData values(4,50)
insert into StudentData values(5,50)
insert into StudentData values(6,70)
insert into StudentData values(7,80)
insert into StudentData values(8,70)
insert into StudentData values(9,80)
insert into StudentData values(10,80)
insert into StudentData values(11,90)
insert into StudentData values(12,100)
insert into StudentData values(13,40)
SELECT t.Intervals as [Intervals], count(*) as [NoOfStudents]
FROM (
SELECT CASE
WHEN Total_marks BETWEEN 10 and 20 THEN '10-20'
WHEN Total_marks BETWEEN 20 and 30 THEN '20-30'
WHEN Total_marks BETWEEN 30 and 40 THEN '30-40'
WHEN Total_marks BETWEEN 40 and 50 THEN '40-50'
WHEN Total_marks BETWEEN 50 and 60 THEN '50-60'
WHEN Total_marks BETWEEN 60 and 70 THEN '60-70'
WHEN Total_marks BETWEEN 70 and 80 THEN '70-80'
WHEN Total_marks BETWEEN 80 and 90 THEN '80-90'
WHEN Total_marks BETWEEN 90 and 100 THEN '90-100'
end as Intervals
from StudentData) t
group by t.Intervals
Output:
Intervals NoOfStudents
10-20 2
20-30 1
30-40 1
40-50 2
60-70 2
70-80 3
80-90 1
90-100 1