![](/img/trans.png)
[英]MYSQL Single query to retrieve both single row from one table and many rows as a single field from another
[英]Mysql - output of sum as one of the rows in one field in a single table
我的陳述是這樣的:
SELECT, id, Subject, score, fm
FROM(
SELECT id, Subject, SUM( score )/SUM(mm)*100 AS score,
SUM(mm) as fm,
SUM(CASE WHEN enna IN ('test')
THEN (score)
END)/SUM(CASE WHEN enna IN ('test')
THEN (mm)
END)*100 AS scoreb
FROM table WHERE id ='2' AND Year='2014'
AND enna = 'exam'
GROUP BY Subject)r;
如何將測試用作主題之一,如何在對應的行中將scoreb用作字段score1
中的行之一。 我一直在谷歌搜索,找不到任何線索。 我的信譽不足,無法在此處上傳,因此我的預期輸出已上傳到
我認為最簡單的方法是使用union all
:
SELECT id, Subject, score, mm as fm
FROM table
WHERE id = '2' AND Year='2014' AND enna = 'exam'
UNION ALL
SELECT id, 'test' as Subject, SUM(score) as score,
SUM(score)/SUM(mm)*100 AS fm
FROM table
WHERE id = '2' AND Year='2014' AND enna = 'test' ;
順便說一句,我沒有得到fm
的計算。 查詢中的計算與您顯示的結果不同。 但這很容易調整。
嘗試這個。
SELECT id,Subject,MAX(Score) AS 'Score',MAX(mm) AS 'fm'
FROM tbl1
GROUP BY Subject
UNION ALL
(SELECT distinct id, 'test' AS Subject,
(SELECT SUM(score) AS 'score' FROM
(SELECT DISTINCT Score FROM tbl1 WHERE enna='test')t1) ,
(SELECT SUM(mm) AS 'fm' FROM
(SELECT DISTINCT mm FROM tbl1 WHERE enna='test')t2)
FROM tbl1
WHERE enna = 'test') ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.