sql - 如何将来自不同表的这两个查询合并为一个来计算百分比?

标签 sql postgresql querying

我有以下查询,其中包含该期间的学生出勤情况:

select total_presences from diary.period_attendance 
where id_customer = 1492 and id_diary_period = 172818 and id_user = 835603;

而且我有同期的课时数。

select count(*) from diary.lesson where id_diary_period = $1 and id_customer = $2 and end_date < now();

我想将 total_presences 除以课时数以获得学生的出勤率。

如何在单个查询中执行此操作?

最佳答案

可能最简单的方法是使用 CTE:

WITH lesson_count AS (
   select count(*) as lessons
   from diary.lesson 
   where id_diary_period = $1 and id_customer = $2 and end_date < now()
)
select total_presences, total_presences/lessons
from diary.period_attendance, lesson_count
where id_customer = 1492 
  and id_diary_period = 172818 
  and id_user = 835603;

根据 total_presences 的类型,您可能必须将其转换为数字、实数或 float 以避免整数运算。

关于sql - 如何将来自不同表的这两个查询合并为一个来计算百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58522899/

相关文章:

json - 使用 JSONPath 或 SelectTokens 查询 JSON?在 C# 中使用 JSON.NET

javascript - 查询 Firebase 数据库但未获取数据或错误

sql - 关于PostgreSQL性能的两个问题

c# - 如何更改 Fluent NHibernate 对于没有实体的表的默认命名行为?

sql - postgresql 聚合的聚合(sum of sum)

python - 在 Django 框架中使用动态模型

MySQL 匹配模式并选择数字和字母

sql - 批量插入的Postgresql异常处理

sql - 使用变量查询

Elasticsearch 上的 Javascript 查询不适用于子元素