你可能會尋找一些條件和想法;這裏我編譯一些方法:
WITH Sample (Person, Date, Action, Value) AS
(
SELECT 'Jack', '1/1/16', 'Eat' , 0.5 UNION ALL
SELECT 'Jack', '1/2/16', 'Sleep', 0.5 UNION ALL
SELECT 'Jack', '1/3/16', 'Walk' , 0.5 UNION ALL
SELECT 'Jack', '1/4/16', 'Sit' , 0.5
)
SELECT Person,
-- plain sum
SUM(Value) PlainSum,
-- 1.0 will be the maximum value for this expression
CASE WHEN SUM(Value) > 1.00
THEN 1.00
ELSE SUM(Value)
END MaxOne,
-- here we can define different values for each action type
SUM(CASE
WHEN Action = 'Eat' THEN 0.25
WHEN Action = 'Sleep' THEN 0.00
WHEN Action = 'Walk' THEN 0.25
ELSE Value
END) CustomSum
FROM Sample
GROUP BY Person
請問您可以標記您正在使用的rdms(sql server,mysql,...)嗎? –
計算總行數,並將行數除1?不確定你在問什麼?請提供您迄今爲止所嘗試的內容以及預期結果?每行的值都是0.5? – dadde
這聽起來像你想有條件地計算某些行動,(如計數「吃」,而不是「睡眠」)。這是你的意思嗎?「能夠確保只計算總計達到1的某些動作」。你的語法讓你很難理解你想要什麼。 –