次のソリューションを使用することができます:あなたはTRUNCATE
を使用することができ、結果を丸めずに、あなたの出力をフォーマットするには
SELECT pid,
(((SUM(CASE WHEN rate = 5 THEN 5 ELSE 0 END) * 5) +
(SUM(CASE WHEN rate = 4 THEN 4 ELSE 0 END) * 4) +
(SUM(CASE WHEN rate = 3 THEN 3 ELSE 0 END) * 3) +
(SUM(CASE WHEN rate = 2 THEN 2 ELSE 0 END) * 2) +
(SUM(CASE WHEN rate = 1 THEN 1 ELSE 0 END) * 1))/SUM(rate)) AS c_rate
FROM table_name
WHERE pid = 1
GROUP BY pid
を。結果を丸めて切り捨てる場合は、ROUND
を使用することもできます。
TRUNCATE
使用したソリューション:
SELECT pid,
TRUNCATE((((SUM(CASE WHEN rate = 5 THEN 5 ELSE 0 END) * 5) +
(SUM(CASE WHEN rate = 4 THEN 4 ELSE 0 END) * 4) +
(SUM(CASE WHEN rate = 3 THEN 3 ELSE 0 END) * 3) +
(SUM(CASE WHEN rate = 2 THEN 2 ELSE 0 END) * 2) +
(SUM(CASE WHEN rate = 1 THEN 1 ELSE 0 END) * 1))/SUM(rate)), 1) AS c_rate
FROM table_name
WHERE pid = 1
GROUP BY pid
ROUND
使用したソリューション:あなたの式は値があなたがwhich-識別する方法を持っていることを何らかの方法で注文したりしていることを示唆している
SELECT pid,
ROUND((((SUM(CASE WHEN rate = 5 THEN 5 ELSE 0 END) * 5) +
(SUM(CASE WHEN rate = 4 THEN 4 ELSE 0 END) * 4) +
(SUM(CASE WHEN rate = 3 THEN 3 ELSE 0 END) * 3) +
(SUM(CASE WHEN rate = 2 THEN 2 ELSE 0 END) * 2) +
(SUM(CASE WHEN rate = 1 THEN 1 ELSE 0 END) * 1))/SUM(rate)), 1) AS c_rate
FROM table_name
WHERE pid = 1
GROUP BY pid
それは何ですか。 SQLテーブルは*順序付けられていない*集合を表しているので、あなたの質問にはその質問に答えるのに十分な情報がありません。 –
@ GordonLinoffだから私は* xの定数を識別する方法がないので、SQLを使って行うことは不可能ですか? –
一意のIDを含むように質問を修正した後、明らかに可能です。 –