CREATE TABLE newsarticles
(katernenID int, Buitenland int, Economie int, Sport int, Cultuur int, Wetenschap int, Media int, userID int);
INSERT INTO newsarticles
(katernenID, Buitenland, Economie, Sport, Cultuur, Wetenschap, Media, userID)
VALUES
(1, 24, 5, 52, 3, 2, 3, 1),
(3, 2, 0, 0, 1, 51, 66, 5),
(4, 50, 2, 67, 41, 1, 54, 6),
(5, 30, 1, 79, 0, 0, 12, 7),
(6, 9, 26, 0, 100, 11, 0, 8),
(7, 2, 14, 8, 1, 33, 98, 9),
(8, 0, 1, 0, 1, 0, 0, 10);
SELECT
userID,GROUP_CONCAT(amt ORDER BY amt DESC) AS four_highest
FROM
(
SELECT userID, @rownum := @rownum + 1 AS rank, NAME, amt FROM (
SELECT userID, Buitenland AS amt, 'Buitenland' AS NAME UNION
SELECT userID, Economie, 'Economie' UNION
SELECT userID, Sport, 'Sport' UNION
SELECT userID, Cultuur, 'Cultuur' UNION
SELECT userID, Wetenschap, 'Wetenschap' UNION
SELECT userID, Media, 'Media'
FROM(SELECT katernenID, Buitenland, Economie, Sport, Cultuur, Wetenschap, Media, userID FROM newsarticles ) temp
) amounts, (SELECT @rownum := 0) r
) top4
GROUP BY userid
我想在上面的查詢中創建UNION,但Union不工作。 UNION立即需要FROM語句。 像:使用UNION的子查詢選擇
SELECT userID, Wetenschap, 'Wetenschap'
FROM(SELECT katernenID, Buitenland, Economie, Sport, Cultuur, Wetenschap, Media, userID FROM newsarticles ) temp
UNION
SELECT userID, Media, 'Media'
FROM(SELECT katernenID, Buitenland, Economie, Sport, Cultuur, Wetenschap, Media, userID FROM newsarticles ) temp
但我不能重複FROM語句,也有子查詢太多計算。有沒有辦法做到這一點,或者我錯過了什麼?
OR
我想最大(a_percentage,b_percentage,c_percentage),SecondMAX(a_percentage,b_percentage,c_percentage),ThirdMAX(a_percentage,b_percentage,c_percentage)
SELECT id,a,b,c,a_percentage,b_percentage,c_percentage
-- -------------------------max percentage
GREATEST(axis_per, hdfc_per,icici_per,citi_per) AS max_per,
FROM (
SELECT id,a,b,c,
IFNULL(a*100/a+b+c+d,0) AS a_percentage,
IFNULL(b*100/a+b+c+d,0) AS b_percentage,
IFNULL(c*100/a+b+c+d,0) AS c_percentage
FROM test
WHERE TIME > '2012-01-01'
GROUP BY id
) A
出你的結構的nd樣本記錄,你期望的結果是什麼? –