Mysql - 如何使用十进制查找最大值

时间:2018-04-30 13:15:36

标签: mysql sql max

在mysql表(books_title)中有144条记录。 列book_progressive包含行的这些值: 01.01 02.01 03.01 ... 99.01 100.01 101.01 102.01 ... 144.01

使用此查询检查最大值时:

resource "aws_cloudwatch_event_rule" "snapshot_example" {
  name = "example-snapshot-volumes"
  description = "Snapshot EBS volumes"
  schedule_expression = "rate(24 hours)"
}

resource "aws_cloudwatch_event_target" "example_event_target" {
  target_id = "example"
  rule = "${aws_cloudwatch_event_rule.snapshot_example.name}"
  arn = "arn:aws:events:${var.aws_region}:${var.account_id}:target/create-snapshot"
  input = "${jsonencode("${aws_ebs_volume.example.id}")}"
  role_arn = "${aws_iam_role.snapshot_permissions.arn}"
}

resource "aws_iam_role" "snapshot_permissions" {
  name = "example"
  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "automation.amazonaws.com"
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}
EOF
}

resource "aws_iam_policy" "snapshot_policy" {
  name        = "example-snapshot-policy"
  description = "grant ebs snapshot permissions to cloudwatch event rule"
  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "ec2:RebootInstances",
        "ec2:StopInstances",
        "ec2:TerminateInstances",
        "ec2:CreateSnapshot"
      ],
      "Resource": "*"
    }
  ]
}
EOF
}

resource "aws_iam_role_policy_attachment" "snapshot_policy_attach" {
  role       = "${aws_iam_role.snapshot_permissions.name}"
  policy_arn = "${aws_iam_policy.snapshot_policy.arn}"
}

返回99.01,但最大值为144.01。

如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:2)

看起来你的book_progressive被声明为CHAR / VARCHAR而不是DECIMAL。

更改列类型或CAST结果:

select max(CAST(book_progressive AS DECIMAL(10,2)) from books_title

答案 1 :(得分:0)

我找到了一个LPAD解决方案,因为只有当字符数相等时才能找到最大值

select max(lpad(book_progressive,6,0)) from books_title

Thans

相关问题