2017-04-24 48 views
0
+----+-------------------------+--------+------------+-------+--------+--------------+------------+---------+-----------+ 
| id | user_email    | cat_id | sub_cat_id | score | out_of | score_in_per | date  | groupId | groupType | 
+----+-------------------------+--------+------------+-------+--------+--------------+------------+---------+-----------+ 
| 13 | [email protected] | 9  | 11   | 40 | 40  | 100   | 22-04-2017 | 34  | institute | 
+----+-------------------------+--------+------------+-------+--------+--------------+------------+---------+-----------+ 
| 14 | [email protected] | 9  | 11   | 37 | 40  | 92.5   | 22-04-2017 | 34  | institute | 
+----+-------------------------+--------+------------+-------+--------+--------------+------------+---------+-----------+ 
| 15 | [email protected] | 9  | 11   | 35 | 54  | 90.35  | 22-04-2017 | 34  | institute | 
+----+-------------------------+--------+------------+-------+--------+--------------+------------+---------+-----------+ 
| 17 | [email protected] | 9  | 11   | 75 | 41  | 91.52  | 22-04-2017 | 34  | institute | 
+----+-------------------------+--------+------------+-------+--------+--------------+------------+---------+-----------+ 
| 20 | [email protected] | 9  | 11   | 47 | 56  | 85   | 22-04-2017 | 34  | institute | 
+----+-------------------------+--------+------------+-------+--------+--------------+------------+---------+-----------+ 
| 35 | [email protected] | 9  | 11   | 14 | 89  | 20.45  | 22-04-2017 | 34  | institute | 
+----+-------------------------+--------+------------+-------+--------+--------------+------------+---------+-----------+ 
| 37 | [email protected] | 9  | 11   | 69 | 78  | 45.45  | 22-04-2017 | 34  | institute | 
+----+-------------------------+--------+------------+-------+--------+--------------+------------+---------+-----------+ 

从上面的表,我想获得最大的score_in_per值作为一个子查询,但由于小数它不被工作降序或max(score_in_per)凭什么妮获得最大score_in_per如何使用子查询得到msyql表中的最大列值当值是十进制和非小数

这是我已经试过,但最大值不来..

(SELECT MAX(score_in_per) 
FROM tbl_student_skill_score WHERE cat_id=9 
and sub_cat_id=11 
ORDER BY score_in_per DESC) as maxPortaScore 
+0

似乎问题是'ORDER BY score_in_per DESC',而不是'MAX'。 MAX有什么用?或者,也许问题是与外部查询?请也表明一下。 –

回答

1
SELECT 
max(cast(score_in_per as decimal(5,2))) 
FROM tbl_student_skill_score WHERE cat_id=9 
and sub_cat_id=11 

试试上面的代码。 希望这会帮助你。

+0

语法错误。 'max' –

+0

@AbdulWaheed尝试更新一个.. –

+0

thankx它工作..你能解释什么是演员,以及如何小数(5,2)工作..? –

1

这里有两种方法。如果你想使用MAX()功能,那么你不需要ORDER BY。因此,下面应该工作:

SELECT MAX(CAST(score_in_per AS DECIMAL(10,2))) AS maxPortaScore 
FROM tbl_student_skill_score 
WHERE cat_id = 9 AND sub_cat_id = 11 

另一种方法是对比分列中使用ORDER BY,然后限制结果设置为只在第一个记录,即最大比分:

SELECT CAST(score_in_per AS DECIMAL(10,2)) 
FROM tbl_student_skill_score 
WHERE cat_id = 9 AND sub_cat_id = 11 
ORDER BY CAST(score_in_per AS DECIMAL(10,2)) DESC 
LIMIT 1 

我更新了上面的接受答案,这意味着score_in_per被存储为文本。

+0

当有100个最大记录时,上述两个查询都不起作用。它仍然显示'92.5记录.' –

相关问题