【问题标题】:PostgreSQL - Finding highest column valuePostgreSQL - 查找最高列值
【发布时间】:2019-01-06 03:51:46
【问题描述】:

假设我有一个跟踪学生考试成绩的表格。

CREATE TABLE scores (
student_id SERIAL PRIMARY KEY,
name VARCHAR(100),
test1 INTEGER,
test2 INTEGER,
test3 INTEGER,
test4 INTEGER,
highest_score VARCHAR(50)
)

如果我希望最高分列列出分数最高的测试#(例如,如果分数是 test1: 90, test2: 95, test3: 85, test4: 90,那么highest_score 将列出 test2),如何我可以计算这个吗?这一切都可以在 PostgreSQL 上完成吗?还是我需要在后端进行计算并将结果发送回表格?

我在前端使用 React,在后端使用 Node。

【问题讨论】:

  • 因为数据库针对数据检索进行了优化,您可以在后端进行此操作

标签: node.js reactjs postgresql


【解决方案1】:

使用case 表达式:

update scores
set highest_score = case 
    when test1 = greatest(test1, test2, test3, test4) then 'test1'
    when test2 = greatest(test1, test2, test3, test4) then 'test2'
    when test3 = greatest(test1, test2, test3, test4) then 'test3'
    else 'test4'
end

greatest() 函数是在 Postgres 8.1 中引入的。

【讨论】:

  • 我试过了,收到了这样的回复:“错误:没有这样的功能:最大”
  • max 通常做错事,postgres 版本是什么?
猜你喜欢
  • 2017-04-08
  • 2022-10-04
  • 2022-01-18
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多