【问题标题】:How to sort table names only if they have the same value in a numeric field?只有当它们在数字字段中具有相同的值时,如何对表名进行排序?
【发布时间】:2022-09-23 23:57:08
【问题描述】:

我用 SQL 制作了下表:

CREATE TABLE facts (
    id          INTEGER PRIMARY KEY,
    dates       DATE DEFAULT CURRENT_DATE NOT NULL,
    amount      NUMERIC( 7, 2) NOT NULL,
    client      CHAR(40) NOT NULL
);

INSERT INTO facts VALUES    ( 1, DATE \'10-9-2017\', 500, \'Mark\'),
                ( 2, DATE \'11-9-2017\', 170, \'Joseph\'),
                ( 3, DATE \'20-9-2017\', 500, \'Louis\'),
                ( 4, DATE \'25-9-2017\', 30, \'Joseph\'),
                ( 5, DATE \'25-10-2017\', 40, \'Anne\');

我正在尝试选择日期早于 2017 年 9 月 15 日或数量大于 400 的行的名称。为此,我使用以下命令:

SELECT client FROM facts WHERE dates<\'15-9-2017\' OR amount>400 ORDER BY amount DESC;

我的问题是有两个相等的数量,我想只对数量相等的名字进行升序排序,所以我想最后得到的是: \"Louis, Mark, Joseph\" 按顺序和我不知道如何使用 ORDER BY 仅对具有相同数量的那些进行排序。

  • 你试过SELECT amount, client FROM facts WHERE dates&lt;\'2017-09-15\' OR amount&gt;400 ORDER BY amount DESC, client ASC;

标签: sql postgresql


【解决方案1】:

这正是带有两个表达式的 ORDER BY 子句的排序方式:

ORDER BY amount DESC, client

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    相关资源
    最近更新 更多