我有两张表u
和marklist
:
SELECT * from u;
+------+-------+--------+-------+------------+
| id | name | adress | class | DOB |
+------+-------+--------+-------+------------+
| 1 | Arun | kollam | 6 | 1993-02-01 |
| 2 | Anoop | kollam | 6 | 1993-05-11 |
| 2 | Devi | kollam | 6 | 1993-04-16 |
+------+-------+--------+-------+------------+
3 rows in set (0.02 sec)
select * from marklist;
+------+-----------+------------+-------+--------+
| id | subject | markscored | outof | userid |
+------+-----------+------------+-------+--------+
| 1 | biology | 37 | 50 | 1 |
| 2 | chemistry | 48 | 50 | 1 |
| 3 | physics | 48 | 50 | 1 |
| 4 | biology | 45 | 50 | 2 |
| 5 | chemistry | 41 | 50 | 2 |
| 6 | physics | 34 | 50 | 2 |
| 7 | biology | 39 | 50 | 3 |
| 8 | chemistry | 46 | 50 | 3 |
| 9 | physics | 48 | 50 | 3 |
+------+-----------+------------+-------+--------+
9 rows in set (0.00 sec)
从这两个表中我需要一个输出:
+------+------+---------+-----------+---------+----------------+------------+
| name |class | biology | chemistry | physics | totlmarkscored | percentage |
+------+------+---------+-----------+---------+----------------+------------+
答案 0 :(得分:0)
SELECT u.name, u.class, marklist.subject as biology, marklist.subject as chemistry, marklist.subject as physics, marklist.totlmarkscored, marklist.percentage
FROM u
INNER JOIN marklist
ON u.id=marklist.id
随意编辑我的错误!
答案 1 :(得分:0)
SELECT t1.name,
t1.class,
t2.biology,
t2.chemistry,
t2.physics,
COALESCE(t2.biology, 0) + COALESCE(t2.chemistry, 0) +
COALESCE(t2.physics, 0) AS totlmarkscored,
100*(COALESCE(t2.biology, 0) + COALESCE(t2.chemistry, 0) +
COALESCE(t2.physics, 0)) /
(COALESCE(t2.outofbiology, 0) + COALESCE(t2.outofchemstry, 0) +
COALESCE(t2.outofphysics, 0)) AS percentage
FROM u t1
INNER JOIN
(
SELECT userid,
MAX(CASE WHEN subject = 'biology' THEN markscored END) AS biology,
MAX(CASE WHEN subject = 'biology' THEN outof END) AS outofbiology,
MAX(CASE WHEN subject = 'chemistry' THEN markscored END) AS chemistry,
MAX(CASE WHEN subject = 'chemistry' THEN outof END) AS outofchemistry,
MAX(CASE WHEN subject = 'physics' THEN markscored END) AS physics,
MAX(CASE WHEN subject = 'physics' THEN outof END) AS outofphysics,
FROM marklist
GROUP BY userid
) t2
ON t1.id = t2.userid