【问题标题】:No operator matches the given name and argument types. You might need to add explicit type casts -- PostgreSQL 14.1没有运算符与给定的名称和参数类型匹配。您可能需要添加显式类型转换——PostgreSQL 14.1
【发布时间】:2022-02-11 22:36:26
【问题描述】:

我是 SQL 的初学者,我使用的是 PostgreSQL。 我的数据库是房地产交易列表,1 行 = 1 次销售。 这是我的表格的描述:

CREATE TABLE adresse (
id SERIAL,
num_voie SMALLINT,
bis_ter VARCHAR(10),
type_voie VARCHAR(30),
voie VARCHAR(50),
cp VARCHAR(10),
ville VARCHAR(100));

CREATE TABLE bien(
id SERIAL,
type_bien VARCHAR(30),
surf_bien SMALLINT,
nbr_piece SMALLINT);

CREATE TABLE vente (
id SERIAL,
date_vente DATE,
prix_vente INTEGER,
id_adresse INTEGER,
id_bien INTEGER);

此外,“id_adresse”是一个引用地址 (id) 的 FK,“id_bien”是一个引用 bien (id) 的 FK。

这是我的问题:当我尝试使用此查询计算第一季度和第二季度之间的销售变化率时:

WITH vente_T1 AS (
SELECT count(*) FROM vente WHERE date_vente BETWEEN '2020-01-01' AND '2020-03-31'),
vente_T2 AS (
SELECT count(*) FROM vente WHERE date_vente BETWEEN '2020-04-01' AND '2020-06-30')
SELECT vente_T2-vente_T1 FROM vente_T1, vente_T2;

我有这个错误:

ERROR:  operator does not exist: record - record 
LINE 5: SELECT vente_T2-vente_T1 FROM vente_T1, vente_T2; 
HINT: No operator matches the given name and argument types. 
You might need to add explicit type casts. 
SQL state: 42883 Character: 216

我在另一个主题中看到“这是由于 WHERE 子句包含字符串值而不是整数值。”

但我不知道如何计算不指定日期的销售变化率...

如果您有任何想法,欢迎!

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    您的直接问题是表达式vente_T2-vente_T1 - 您不能从另一条记录中减去一条完整的记录。您只能对 执行此操作。但是,为了访问 CTE 中的列,您应该给它们一个适当的别名:

    WITH vente_T1 AS (
      SELECT count(*) as num_vente
      FROM vente 
      WHERE date_vente BETWEEN '2020-01-01' AND '2020-03-31'
    ), vente_T2 AS (
      SELECT count(*) as num_vente
      FROM vente 
      WHERE date_vente BETWEEN '2020-04-01' AND '2020-06-30'
    )
    SELECT vente_T2.num_vente - vente_T1.num_vente 
    --              ^ column name        ^ column name
    FROM vente_T1
      cross join vente_T2;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-21
      • 2011-04-13
      • 2021-05-13
      • 2016-01-18
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多