SQL. 如何向count()结果添加更多值?

huangapple go评论87阅读模式
英文:

SQL. How to add more values to a count() result?

问题

a) 表 'students' 包含学生信息,包括他们的班级/年级。
b) 表 'outreach' 包含活动信息,其中包括班级/年级以及参加活动的学生人数。

现在我需要创建一个图表(使用plotalot),显示每个班级/年级有多少学生参加了活动。

对于表 'students',您可以使用一个简单的count()分组查询来实现。但是如何将表 'outreach' 的值添加到这些结果中呢?

例如,表 'students' 为1班级产生了45个条目。表 'outreach' 有两个属于1班级的活动,分别有36和40名参与者。如何在不运行循环的情况下得到45 + 36 + 40呢?

您可以使用在选择语句之间使用+运算符将它们全部相加,但是否有更加优雅的方法呢?

感谢您的建议!
Lori

英文:

I have this situation:

a) talbe 'students' with students that contains their class/grade
b) tale 'outreach' with event that contains a class/grade and how many students were present

Now I need to produce a graph (with plotalot) that shows how many students per class/grade were reached.

I can get there for table 'studends' with a simple count() group by query. But how can I add the values of table 'outreach' to these results?

For example, tabel 'students' produces 45 entries for class 1. Table 'outreach' has two events for class 1 with 36 and 40 particiapants each. How to I get to 45 + 36 + 40 withoug having to run some loops?

I could sum them all up using th + operator between select statements, but isn't there a more elegant method?

Thanks for your suggestions!
Lori

答案1

得分: 1

抱歉,以下是表格结构的基本信息:

学生

Bill / 班级1
Susan / 班级2
Marc / 班级3
Bob / 班级1
Ellen / 班级2

活动

活动1 / 班级1 / 35 参与者
活动2 / 班级2 / 27 参与者
活动3 / 班级1 / 31 参与者

我需要的是班级1的总数(即1 + 1 + 35 + 31),班级2的总数(1 + 1 + 27),班级3等等。

我可以使用“学生”表格的count()和group by来得到总数。但是,现在,如何将来自“活动”表格的值相加呢?

英文:

Sorry, here are the basics of the table structures:

Students

Bill / Class 1
Susan / Class 2
Marc / Class 3
Bob / Class 1
Ellen / Class 2

Events

Event 1 / Class 1 / 35 participants
Event 2 / Class 2 / 27 Participants
Event 3 / Class 1 / 31 participants

What I need is the total of class 1 (i.e. 1 + 1 + 35 + 31), class 2 (1 + 1 + 27), class 3 etc. etc.

I get the total of the 'students' table with count() and group by. But now, how to add the values from table 'events'?

答案2

得分: 0

以下是翻译好的部分:

  1. CREATE TABLE Students
  2. (
  3. NAME VARCHAR2 (50),
  4. CLASS NUMBER
  5. );
  6. INSERT INTO Students
  7. VALUES ('Bill', 1);
  8. INSERT INTO Students
  9. VALUES ('Susan', 2);
  10. INSERT INTO Students
  11. VALUES ('Marc', 3);
  12. INSERT INTO Students
  13. VALUES ('Bob', 1);
  14. INSERT INTO Students
  15. VALUES ('Ellen', 2);
  16. CREATE TABLE EVENTS
  17. (
  18. EVENT NUMBER,
  19. CLASS NUMBER,
  20. PARTICIPANTS NUMBER
  21. );
  22. INSERT INTO EVENTS
  23. VALUES (1, 1, 35);
  24. INSERT INTO EVENTS
  25. VALUES (2, 2, 27);
  26. INSERT INTO EVENTS
  27. VALUES (3, 1, 31);
  28. COMMIT;
  29. --What I need is the total of class 1 (i.e. 1 + 1 + 35 + 31), class 2 (1 + 2 + 27), class 3 etc. etc.
  30. --I get the total of the 'students' table with count() and group by. But now, how to add the values from table 'events'?
  31. SELECT CLASS, SUM (TOTAL) AS TOTALIZED
  32. FROM ( SELECT class, COUNT (1) AS TOTAL
  33. FROM STUDENTS
  34. GROUP BY class
  35. UNION ALL
  36. SELECT CLASS, SUM (participants) AS TOTAL
  37. FROM EVENTS
  38. GROUP BY class)
  39. GROUP BY CLASS
  40. ORDER BY CLASS;
英文:
  1. CREATE TABLE Students
  2. (
  3. NAME VARCHAR2 (50),
  4. CLASS NUMBER
  5. );
  6. INSERT INTO Students
  7. VALUES ('Bill', 1);
  8. INSERT INTO Students
  9. VALUES ('Susan', 2);
  10. INSERT INTO Students
  11. VALUES ('Marc', 3);
  12. INSERT INTO Students
  13. VALUES ('Bob', 1);
  14. INSERT INTO Students
  15. VALUES ('Ellen', 2);
  16. CREATE TABLE EVENTS
  17. (
  18. EVENT NUMBER,
  19. CLASS NUMBER,
  20. PARTICIPANTS NUMBER
  21. );
  22. INSERT INTO EVENTS
  23. VALUES (1, 1, 35);
  24. INSERT INTO EVENTS
  25. VALUES (2, 2, 27);
  26. INSERT INTO EVENTS
  27. VALUES (3, 1, 31);
  28. COMMIT;
  29. --What I need is the total of class 1 (i.e. 1 + 1 + 35 + 31), class 2 (1 + 1 + 27), class 3 etc. etc.
  30. --I get the total of the 'students' table with count() and group by. But now, how to add the values from table 'events'?
  31. SELECT CLASS, SUM (TOTAL) AS TOTALIZED
  32. FROM ( SELECT class, COUNT (1) AS TOTAL
  33. FROM STUDENTS
  34. GROUP BY class
  35. UNION ALL
  36. SELECT CLASS, SUM (participants) AS TOTAL
  37. FROM EVENTS
  38. GROUP BY class)
  39. GROUP BY CLASS
  40. ORDER BY CLASS;

SQL. 如何向count()结果添加更多值?

huangapple
  • 本文由 发表于 2023年3月7日 17:20:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/75660037.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定