我有一些在PostgreSQL中正确工作的查询,但我必须使用它们来进行DB2查询。看起来“过滤器”不适用于DB2。
我的PGSQL查询:
SELECT CODACT, SUM(CUMCOL) FILTER(WHERE etasup > 20), SUM(CUMCOL)
FROM gesupe WHERE typsup= '1' AND (DATLIV = 20220428 OR DATLIV = 20220429) GROUP BY CODACT
当我将它与DB2一起使用时,我会得到以下错误:
Element '(' not correct. Possib
我当前的查询是:
select rulename,status, count(*)
from triggered_rule_info
group by status, rulename
结果是:
rulename status count
eorule1 ack 1
eorule1 open 1
eorule1 close 7
eorule2 open 1
eorule2 ack 1
但我希望结果是:
rulename ack open close
eorule1 1 1
我正在编写一个函数,如果当前用户有“星号”行,则该函数将获得。当前用户的id存储在局部变量中,并通过postgresql current_setting函数访问。如何为current_setting提供默认值?这是我的功能:
CREATE FUNCTION current_user_starred(star_group_id integer)
RETURNS boolean
AS $$
SELECT COUNT(*) != 0
FROM star
WHERE star_group_id = star_group_id
AND starrer_
必须将下面的MSSQL代码迁移到postgresql,希望看到postgresql代码,这样做如下。MSSQL
MERGE TO_SubFamy AS TARGET
USING
(
SELECT SF.Id as SubFamyId,
CASE WHEN COUNT(A.Id)>0 THEN 'Young' ELSE 'OLD' END as ActiveYn
FROM
TO_SubFamy SF
我似乎不能让CASE部件工作
SELECT ROUND((SUM((to_number(g.grade, '9D99') * s.subjunits)))/(SUM(s.subjunits)), 2), CASE WHEN g.grade='DRP' THEN '5.00' END
FROM (grade g
INNER JOIN registration r ON r.grade_id = g.grade_id)
INNER JOIN subject s ON s.
在Postgresql中,我的一列只包含5个值中的一个。这5个值中有一个是“成熟的”。我正在尝试编写一个查询,该查询统计整个表的特定部分在该列中出现了多少次“成熟”。
下面的查询生成错误:syntax error at or near "Matured"。
查询:
select count(case when stagename is Matured end) from db_table
"Matured";694
"Credit Approved";3
"Delinquent";572
"Current";13
我正在尝试处理空单元格,并在PostgreSQL中查询时获取填充了类似“空白”字符串的空单元格的数据。我的查询如下所示:
SELECT t_id, a_date, c_date, o_s_date, o_e_date,
ttr_hr, ttn_min, d_sub_outage_impact,
tkt_source, d_vertical, d_grp, city, state
FROM r.all_t_event b
Left Outer Join(
select i_number,status,o_group
From r.hpd_help_desk
PostgreSQL中有没有一个函数可以对具有相似值的行进行分组?最好是像ST_clusterDBSCAN这样的窗口函数,它将选定距离内的行放在一起。示例如下:
Group Value
A 1
A 2
A 2
A 5
A 6
A 10
B 1
B 3
我正在寻找函数,它会给我这样的结果。
SELECT group, value,
"FUNCTION"(value, 2) OVER (PARTITION BY g
请给我一些建议。
我已经写了一个案例说明来填充一个新的字段。对于一个有3亿多条记录的数据库表,这需要大约12个小时。
UPDATE line
SET code = (CASE
WHEN (group ='{Building}' and term = '{Outline}') then 1
WHEN (group ='{Building}' and term = '{Division}') then 2
WHEN (group ='{Building}' and
我在postgreSQL中有这些数据
Id type quantity
1 order 10
2 order 12
3 order 11
4 purchase 5
5 purchase 4
6 credit 2
当类型=‘订单’或‘信用’时,我想返回数量为负数
Id type quantity
1 order -10
2 order -12
3 order -11
4 purchase 5
5 pur
原始表User
ID Created_Date SubmittedAt ApprovedAt
原始表Campaign
User_ID Clicked_At
现在,我想生成一个包含以下列的报告
Month Year #Applicants #Submitted #Approved
我使用postgresql编写查询:
SELECT To_char(C.clicked_at, 'MON') AS MON,
Extract(year FROM C.clicked_at) AS YYYY,
CASE
WH
我得到了一个PostgreSQL查询:
SELECT Sum(CASE
WHEN p LIKE '%add%'
AND p NOT LIKE '%add post%' THEN counter
ELSE 0
end) AS "AGREGAR",
Sum(IF p LIKE '%add%' AND p NOT LIKE '%add post%' TH
在下面给出的postgresql查询中,我想要count(completed::float)
select round(Count(completed::float)) as completed,
assignee
from NTE_23Apr19_HCMS_DOW_Defects_List_V1
group by assignee
这是我的postgresql表
如果我在查询中没有使用浮点,它将工作,但我想使用float.Is执行它是可能的
select round(Count(completed)) as completed,
assignee
我有一个FinishedGames表,列有:类别和分数。我需要知道有多少比赛按类别结束超过一定的分数,但我不明白的计数,如果结构在PostgreSQL。
select category, count(score) as rounds, count(if score > 7) as wins
from "FinishedGames" group by category;
有人知道如何在PostgreSQL中做到这一点吗?
如何在PostgreSQL,PL/pgSQL上执行开关CASE语句?
目前,我们可以对这样的一个IF块:
IF boolean THEN
statements;
ELSE
IF boolean THEN
statements;
ELSE
statements;
END IF;
END IF;
然而,在一些情况下,这是不可取的。然后,一个更好的方法是使用一些接近通常的switch语句。
相关线程:
使用PostgreSQL 9.6。我想要计算一个值在一列中其他两个值之间的次数。
在这个例子中,我搜索“mid”列,结果应该是5。如果我硬编码这些值,它会工作得很好,但这是不可接受的。当使用字段值给出20的答案时,它会失败。它似乎完全忽略了低和高字段。
为什么在第二个case语句中没有计算“low”和“high”字段?我该如何绕过它呢?
SELECT low, mid, high,
sum(case when mid between 35 and 57 then 1 end) over(partition by mid between 35 and 57) as
我需要创建DMS_EPRPFL实体,如下所示:
DMS_EPRPFL = FOREACH ORDER_EPSE_ENEE_ENR GENERATE
GROUP_EPSE_ENEE_ENR::IDT_GCP AS IDT_GCP,
GROUP_EPSE_ENEE_ENR::CD_FRM_JUR AS CD_FRM_JUR,
GROUP_EPSE_ENEE_ENR::DA_CRE_EPS AS DA_CRE_EPS,
GROUP_EPSE_ENEE_ENR::NO_SIREN AS NO_SIREN,
G
我需要按日期/时间字段(例如last_updated )对PostgreSQL表进行升序排序。
但该字段允许为空或为空,且我希望在非空last_updated之前出现last_updated中带有空值的记录。
这个是可能的吗?
order by last_updated asc -- and null last_updated records first ??
请原谅,如果这是微不足道的-我是新手使用PostGRESQL。我有两张桌子:
CREATE TABLE group_users (
user_id int NOT NULL PRIMARY KEY,
group_id int NOT NULL,
join_time timestamp NOT NULL,
member_rank enum('l','a','m') DEFAULT NULL
);
CREATE TABLE interactions (
interactionid int PRIMARY KEY NOT NULL
select
case
when daftar ='sd' then kouta
end as a,
case
when daftar = 'smp' then kouta
end as b,
case
when daftar = 'sma' then kouta
end as c
from
ajaran
GROUP BY
tahun
结果误差
错误:列"ajaran.daftar“必须出现在GROUP子句中,或者在聚合函数行
在PostgreSQL中,这是一个有效的查询:
SELECT case 2+2 when 1 then 2 else 3 end
如果我把一个复杂的子查询,而不是'2+2‘,它仍然工作良好。但是,如果我想知道结果是否小于特定的数字,如何更改此查询?
例如,这个不起作用:
SELECT case 2+2 when > 1 then 2 else 3 end
背景信息
序号位置表示法(也称为序号)是基于SELECT子句中的列列表中的列顺序的列速记,而不是基于列名或列别名。一些数据库(MySQL 3.23+、PostgreSQL 8.0+)通常在ORDER BY子句中受支持,但也支持GROUP BY子句的语法。
下面是一个使用序数的示例:
GROUP BY 1, 2
ORDER BY 1, 2
使用它并不好,因为它使查询变得脆弱-如果列顺序改变,序号需要更新,否则查询将不会返回您所认为的结果。如果这些位置的列被包装在聚合中,那么在GROUP BY中使用时很可能会出现错误……
问题是
我能想到的唯一好处是,如果您不使用存储过程或函数(这使得顺序使用对我
我正在尝试根据表单的输入对数据库执行更新,但遇到了一个问题。我已经尝试了下面的命令,但它没有在数据库上执行命令。它需要读入一个用于决策的值,并根据decision.Can执行查询。有人发现了这里的问题吗?
html表单代码:
<center><div class="container">
<form action="update.php" onsubmit="return confirm('Are you sure you wish to update ?');">
<div class
我正在尝试参数化Hive QL脚本中的GROUP BY子句。
SELECT COUNT(*) AS sales, country, state, city
FROM testdb.data
WHERE
PRICE > 5
GROUP BY
IF (TRUE,
(country, state, city),
(country, state)
)
如何实现这样的查询呢?
我对Postgresql很陌生。我想写一个这样的查询:
SELECT SUM(IF(id in(1,2,3,4,5,6),1,0)) spl_count from tab group by id;
但这是行不通的。它造成了这样的错误:
function if(boolean, integer, integer) does not exist
实际上,我在mysql中尝试过同样的查询,我的意思是和(如果(布尔值,整数,整数))。它在那里工作,但没有在postgresql中工作。那么,我将如何用postgresql编写这种查询呢?
从我的表中的两列中,我希望获得这些列中的值的统一计数。例如,有两列:
表:报告
| type | place |
-----------------------------------------
| one | home |
| two | school |
| three | work |
| four | cafe |
| five | friends |
| six | mall
如何让这些在SAS中工作的SQL代码在POSTGRESQL中工作。下面是在SAS中工作但在POSTGRESQL中不起作用的代码。
newname='Other';
if fullstate='Alaska' then equal_area_id='RAINIER';
if fullstate='Hawaii' then equal_area_id='SHASTA';
if fullstate='California' then equal_area_id='SHASTA';
下面是不起作用的代码,但它描述了我想要做的事情。
你能推荐一下解决这个问题的最佳方法吗?
def resolveDriver(url: String) = {
url match {
case url.startsWith("jdbc:mysql:") => "com.mysql.jdbc.Driver"
case url.startsWith("jdbc:postgresql:") => "org.postgresql.Driver"
case url.startsWith("jd
因为我是plpgSQL的新手
我在将Oracle查询迁移到PostgreSQL时卡住了。
Oracle查询:
create or replace FUNCTION employee_all_case(
p_ugr_id IN integer,
p_case_type_id IN integer
)
RETURN number_tab_t PIPELINED
-- LANGUAGE 'plpgsql'
-- COST 100
-- VOLATILE
-- AS $$
-- DECLARE
is
l_user_id
下面描述的问题适用于Oracle 11g数据库。我还在MySQL和PostgreSQL上测试了这些语句,没有这个问题中提到的问题。
我想在select语句中使用聚合函数,这需要一些额外的计算才能得到结果。我的主要目标是将整个计算保存在一个语句中,因为结果将在后端软件中逐字显示。
让这个DDL定义一个表T。
create table T(
ID number,
NUM number,
TXT varchar(32)
);
insert into T (ID, NUM, TXT) values (1, 1, 'Text1');
insert into T (ID, N
我有这样一张表:
--
-- PostgreSQL database dump
--
SET statement_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET search_path = public, pg_catalog;
SET default_tablespace = '';
SET d
我有一个大表(大约900万行),希望在包含年份的字段中对行进行分组。到目前为止,这相当容易:
// greatly simplified:
SELECT count(*), year FROM dataset GROUP BY year ORDER BY 2;
我们定义了一些跨越多年的不规则时间段:
<1945, 1946-1964, 1965-1974, 1975-1991, 1992-2005 and >2005
我不知道如何将这些结果按子句分组。我可以为每个时间段做子查询。
SELECT
( SELECT count(*) FROM dataset WHERE year
我更喜欢写PostgreSQL。我编写了一个简单的函数,它产生了错误。有人能告诉我是怎么回事吗?非常感谢!
create or replace function constellation(birthday date)
returns varchar(8)
begin atomic
return (if extract(month from birthday)=12 then '摩羯')
end
ERROR: syntax error at or near "extract"
LINE 4: return (if extract(month from birt