1
我对SQL相当陌生,并且自学了SQL到Khan Academy。我创建一个数据库表如下:在可汗学院的挑战中使用别名和个案陈述时奇怪的表格输出
CREATE TABLE Data_Exp (ID INTEGER PRIMARY KEY AUTOINCREMENT, Subject TEXT,
Label TEXT, Gender TEXT, X1 INTEGER, X2 INTEGER,
X3 INTEGER, X4 INTEGER, X5 INTEGER);
INSERT INTO Data_Exp(Subject, Label, Gender, X1, X2, X3, X4, X5) VALUES("S01", "A", "F", 5, 7, 6, 5, 4);
INSERT INTO Data_Exp(Subject, Label, Gender, X1, X2, X3, X4, X5) VALUES("S02", "B", "M", 8, 8, 6, 4, 6);
INSERT INTO Data_Exp(Subject, Label, Gender, X1, X2, X3, X4, X5) VALUES("S03", "A", "M", 6, 1, 4, 3, 3);
INSERT INTO Data_Exp(Subject, Label, Gender, X1, X2, X3, X4, X5) VALUES("S04", "C", "F", 3, 3, 7, 2, 5);
INSERT INTO Data_Exp(Subject, Label, Gender, X1, X2, X3, X4, X5) VALUES("S05", "B", "F", 9, 2, 5, 3, 7);
以上代码的输出是:
然后我继续添加以下代码:
SELECT Subject, Gender, Label, ROUND(0.4*X1 + 0.15*(X2+X3+X4+X5),1) AS Y FROM Data_Exp;
,并得到以下结果(如预期):
然后我用CASE语句来计算列级别:
SELECT Subject, Gender, Label, (SELECT CASE WHEN Y > 6 THEN "Level 6"
WHEN Y > 5 THEN "Level 5"
WHEN Y > 4 THEN "Level 4"
WHEN Y > 3 THEN "Level 3"
WHEN Y > 2 THEN "Level 2"
WHEN Y > 1 THEN "Level 1"
END AS "Level" FROM (SELECT ROUND(0.4*X1 + 0.15*(X2+X3+X4+X5),1) AS Y FROM Data_Exp)) AS Level FROM Data_Exp;
而是获得这样的结果:
我在列级别这种怪异的输出
我在哪里弄错了?