我有一个看起来像这样的表:
Name Year Value
A 2000 5
A 2001 3
A 2002 7
A 2003 1
B 2000 6
B 2001 1
B 2002 8
B 2003 2
Run Code Online (Sandbox Code Playgroud)
用户可以根据年份进行查询,并返回按名称分组的值之和(假设查询年份为2000 - 2001年):
Name SUM(Value)
A 8
B 7
Run Code Online (Sandbox Code Playgroud)
现在,我想插入一个计算字段,该字段输出所有年份的每个名称的值之和与所有值之和的比率.基本上分别归因于A和B的所有值的百分比,如:
Name SUM(Value) % Of Total
A 8 0.484 (16 / 33)
B 7 0.516 (17 / 33)
Run Code Online (Sandbox Code Playgroud)
请注意,即使用户仅查询2000-2001,我希望计算使用所有年份的总和.我一直在寻找和试验几个小时,我无法弄清楚如何.我只知道如何总结所查询的年份:
SELECT `Name`, SUM(`Value`)/(SELECT SUM(`Value`) FROM `table1`) AS "% of Total"
FROM `table1`
WHERE `Year` BETWEEN 2000 AND 2001
GROUP BY `Name`;
Run Code Online (Sandbox Code Playgroud)
请帮忙!我是一个非常新手,并且不太了解SQL,所以请澄清任何高级代码.谢谢你的好意.
kad*_*d81 73
您可以使用FROM子句中的子查询来计算总数(以及所需的百分比):
SELECT Name,
SUM(Value) AS "SUM(VALUE)",
SUM(Value) / totals.total AS "% of Total"
FROM table1,
(
SELECT Name,
SUM(Value) AS total
FROM table1
GROUP BY Name
) AS totals
WHERE table1.Name = totals.Name
AND Year BETWEEN 2000 AND 2001
GROUP BY Name;
Run Code Online (Sandbox Code Playgroud)
请注意,子查询没有过滤年份的WHERE子句.
pau*_*sm4 10
如果你想SELECT基于另一个的值SELECT,那么你可能想要一个"subselect":
http://beginner-sql-tutorial.com/sql-subquery.htm
例如,(来自上面的链接):
你想要表"student_details"中的名字和姓氏......
但是你只想为"科学"课程的学生提供这些信息:
SELECT id, first_name
FROM student_details
WHERE first_name IN (SELECT first_name
FROM student_details
WHERE subject= 'Science');
Run Code Online (Sandbox Code Playgroud)坦率地说,我不确定这是你在寻找与否......但我希望它有所帮助......至少有一点......
恕我直言...