我精通mySQL和MSSQL,但我才刚刚开始使用postgres。我确信这是一个简单的问题,所以简而言之:
SQL error:
ERROR: column "incidents.open_date" must appear in the GROUP BY clause or be used in an aggregate function
In statement:
SELECT date(open_date), COUNT(*)
FROM incidents
GROUP BY 1
ORDER BY open_date
open_date的类型是timestamp wi
我有一个表在Postgres 14.2表名测试有3列:日期,高,和five_day_mavg (日期是PK,如果重要的话),我有一个select语句,正确地计算一个5天移动平均值的基础上的数据在高。
select date,
avg(high) over (order by date rows between 4 preceding and current row) as mavg_calc
from test
It产品的产出如下:
我有两个目标:
首先将查询的输出存储在five_day_mavg.Second中,以这样的方式存储它:当我在一个新行中包含高数据时,它会自动计算
我尝试在postgres中使用别名进行此查询,但postgres停止并报告错误:列"subtotal“不存在
SELECT SUM(price) AS subtotal,
subtotal * 3.0 AS fees,
(subtotal + fees) AS total
FROM cart
你不能在下一篇专栏文章中使用别名吗?
我正在尝试将一些Oracle查询转换为Postgres,并遇到了listagg。
Oracle代码
select max(eta) eta, mso_id, listagg(carrier_name, ',')
within group (order by eta) as carrier
from tb_flight_schedule group by mso_id;
我发现Postgres与listagg的等价物是string_agg,于是开始用string_agg交换listagg。但是,我遇到了错误(错误:函数string_agg(字符变化,未知,日期)不存在)。我在
给出一个包含两个字段的表users:id和email。
select id, email as electronic_mail
from (
select id, email
from users
) t
where electronic_mail = ''
Postgres抱怨说:
错误:"electronic_mail“列不存在
这个例子只是为了说明出现的问题。我的实际情况更复杂,我在json列中遍历一个元素数组,从每个元素中获取一个标量值。(如果有帮助的话,我可以共享一些代码。)
我真的不明白会有什么并发症,可能我不知道什
作为Postgresql的新手(我正在迁移,因为我要将我的站点移到只支持它的heroku,我不得不重构我的一些查询和代码。这是一个我不太能理解的问题:
PGError: ERROR: column "l_user_id" does not exist
LINE 1: ...t_id where l.user_id = 8 order by l2.geopoint_id, l_user_id ...
^
...query:
select distinc
我正在尝试将带有复杂查询的子查询从Oracle转换为Postgres。下面是子查询和它给出的错误。我知道“在团队中”也在Postgres。我遗漏了什么?我甚至将Listagg更改为String_agg,但得到了相同的错误。
Select a, Listagg(b, ', ') WITHIN GROUP (ORDER BY b) "a"
from table;
错误:
错误:...a,Listagg(b,‘)在GRO.
*错误*
错误:在SQL状态内或附近的语法错误: 42601字符: 5290
我一直在玩jOOQ (在Scala中),我很想知道(看起来很简单)这个问题的答案:如何查看一个已经别名的字段?
希望下面的示例说明我的问题:
import org.jooq.impl._
import org.jooq.impl.DSL._
val a = field("a", SQLDataType.DOUBLE)
val b = a.as("b")
// prints "b"
println(b)
// however, I would like it to print a "b" as in
select(b)
编辑
我有一个数据表,它总是按日期排序。我想把最后的10,000排分成1,000行。如果我有15200行,那么10个组应该由5201-6200、6201-7200、.、13201-14200、14201-15200行组成。表中的行不进行数字计算。我需要这个来查找10个组中每个组的值之和。
SELECT SUM(quantity)
FROM dataTable
GROUP BY ???
从Oracle12c开始,我们终于可以像这样使用SQL标准行限制子句了:
SELECT * FROM t FETCH FIRST 10 ROWS ONLY
现在,在Oracle12.1中,在连接表时有一个非常烦人的限制。在使用row limiting子句时,在SELECT子句中不能有两个同名的列。例如,这提高了Oracle12.1中的ORA-00918
SELECT t.id, u.id FROM t, u FETCH FIRST 10 ROWS ONLY
解决方法显然是为列添加别名
SELECT t.id AS t_id, u.id AS u_id FROM t, u FETCH
我有这个问题。我需要查询票证号码从可勾选和成员名从成员稳定,与随机函数和不同的关键字在postgres。MemberName应该是唯一的。
此代码在mySQL中工作,但在PostgreSQL中不工作。
SELECT a.ticketNum, b.memberName
FROM tickettable a, memberstable b
GROUP BY memberName
ORDER BY by rand()
LIMIT 2
我该怎么办?
我无论如何也想不出一个简单的左连接在Presto中,即使在阅读了文档之后也是如此。我非常熟悉Postgres,并在那里测试了我的查询,以确保我没有明显的错误。请参考以下代码:
select * from
(select cast(order_date as date),
count(distinct(source_order_id)) as prim_orders,
sum(quantity) as prim_tickets,
sum(sale_amount) as prim_revenue
from table_a
where o
我有一个问题,我需要计算两个不同列之间的百分比。不幸的是,我无法让它工作,当我运行它时,我得到的只有“无效列名'CountOfPlannedVisits'”和“无效列名'CountOfPlannedVisitsClosed'”
SELECT Count(*) As CountOfPlannedVisits, MAX(datename(month, dbo.tblVisit.DateConfirmed)) AS MonthName,
SUM(CASE WHEN tblVisit.VisitTypeRef <> '5'
我目前有:
sum(CASE
when co.date between '1/1/2022' and now()
then co.amount
else 0
End) as RevYTD,
sum(CASE
WHEN co.date between '1/1/2021' and '12/31/2021'
THEN co.amount
END) AS Rev2021,
我正在尝试做一些事情,但是在说'revYTD不存在‘时遇到了错误:
我有两张桌子: tableA和tableB。TableA有一个字段idA,tableB有一个记录idB和idBPtrA,其中idBptrA是指向tableA (idA之一)的指针。
我希望使用postgres从TableA中选择记录,这些记录在tableB中的记录数量最少。
类似于:
select idA,idB,count(idBPtrA) as c
from tableA,tableB
group by idBPtrA
where idA=idB order by c
当然,这不起作用,给了我一个错误,但我认为这应该是非常相似的.有什么想法吗?
我正在尝试发现表中所有行多次出现的外键,并通过子查询返回这些外键。
使用列上的GROUP BY,我能够可视化每个外键的COUNT:
SELECT orders_id, COUNT(*) as count
FROM order_history
GROUP BY orders_id
但是,当我用WHERE子句增加它时,尝试过滤,如下所示:
SELECT orders_id, COUNT(*) as count
FROM order_history
GROUP BY orders_id
WHERE count > 1
我犯了个错误
#1064 - You have an error in yo
第一篇文章;对我轻松一点。
SQL相对较新(除了简单查询之外的任何东西),但是尝试学习更复杂的函数以利用高级服务器资源。我的问题是:
我想用一个求和函数来汇总各种来源的现金流量。我希望在一个月的时间内看到这些现金流。因为现金流是从不同的时间开始的,所以我想调整一下,这样它们就一致了。我现在的代码是:
select
months_between(A.reporting_date, B.start_date) as season,
sum(case when A.current_balance is null then B.original_balance
el
我有这样的关系:
class Foo {
static hasMany = [bars: Bar, things: Thing]
}
class Bar {
// Has nothing to tie it back to Foo or Thing
}
class Thing {
// Has nothing to tie it back to Foo or Bar
}
下面的查询包含以下参数,其中大部分用于使用柔性网格进行分页。此查询通过Thing获取与特定Bar实例关联的所有Foo实例。所以,如果我的Bar实例是Bar1,那么我的查询就会返回Thing
有人知道如何在同一个表达式中使用group by和order by吗?使用LINQ to NHibernate。我不得不将group by执行到一个列表中,然后对这个进行排序,似乎我在这里错过了一些东西?
示例:-
Private function LoadStats(...) ...
Dim StatRepos As DataAccess.StatsExtraction_vwRepository = New DataAccess.StatsExtraction_vwRepository
return (From x In StatRepos.GetAnswers(Question,
我尝试使用sql查询连接两个字符串。下面是我的代码,它不起作用。
SELECT TOP 100 CONCAT('James ','Stephen') AS [Column1]
FROM [dbo].[ORDERS]
Group BY ()
ORDER BY CONCAT('James ','Stephen') ASC
如果我按照Order子句使用[Column1]而不是CONCAT('James ','Stephen'),那么它似乎有效。
SELECT TOP 100 CONCAT('
我有两张桌子。都有很多专栏。现在,我有了一个名为ID的公共列,我将在其中加入。
现在,由于这个变量ID存在于两个表中--如果我只是这样做的话
select a.*,b.*
from table_a as a
left join table_b as b on a.id=b.id
这将导致一个错误,因为id是重复的(在两个表中都存在,并同时包含在两个表中)。
我不想在select语句中单独写下b的每一列。我有很多专栏,这很痛苦。我是否可以在join语句本身中重命名b的ID列,类似于SAS数据合并语句?
我在用Postgres。
我有一个查询,它在对两个数据库运行时表现不同。
我已经在本地复制了一个临时数据库,并使用它来调试我的代码。
下面是查询:
SELECT DISTINCT ........, ACs.LastName
Bs.Name AS BranchName, .....
......
...... ) LEFT JOIN CompanyTrove
AS Bs
ON .........................
............................
Order BY ACs.LastName,Bs.BranchName, ..... ASC
CompanyTrove表没有名为Bra
我有两个DB2表,一个用于users,一个用于newsletters,我希望在WHERE子句中使用别名进行选择。
SELECT a.*, b.tech_id as user FROM users a
JOIN newsletter b ON b.tech_id = a.newsletter_id
WHERE timestamp(user) < current_timestamp
这是从根本上简化的,这样我就可以看到发生了什么,但是我得到了一个错误,使我认为user别名没有被正确地传递:
ERROR: An invalid datetime format was detected; t
我运行这个SQL请求: SELECT Max(scaleA.val) AS scaleA_val,
Max(scaleB.val) AS scaleB_val,
To_char(From_dt1970(scaleA.time1970), 'DD') AS day
FROM rsdu2elarh.el008_6305119 scaleA
FULL OUTER JOIN rsdu2elarh.el008_6305126 scaleB
ON scaleA.time1970 = scaleB.time1970
WHERE scaleA.t
我遇到了SQL的语法问题。我在这里尝试做的是将每个订单的所有支付金额(paid )相加,然后只选择那些大于特定order# (1008)的paid之和的金额。我一直试图在这里移动许多不同的东西,但我没有任何运气。
这就是我现在所拥有的,尽管我有很多不同的东西。尝试使用它只会返回SQL语句未正确结束的错误。如果你们能提供任何帮助,我们将不胜感激。我必须在这里的任何地方使用DISTINCT吗?
SELECT ORDER#,
TO_CHAR(SUM(PAIDEACH), '$999.99') AS "Amount > Order 1008"
FROM O
以下查询是相同的,还是可能得到不同的结果(在任何主要的DB系统中,例如MSSQL、MySQL、Postgres、SQLite):
在相同的查询中执行这两个操作:
SELECT group, some_agg_func(some_value)
FROM my_table
GROUP BY group
ORDER BY some_other_value
子查询中的排序:
SELECT group, some_agg_func(some_value)
FROM (
SELECT group, some_value
FROM my_table
ORDER BY some_oth
我有两个表(users和posts),我想写出一个用户的所有帖子(以及其他内容)。我想我应该使用一个连接和WHERE,但是我在使用WHERE时得到了一个错误。
这是我的代码:
SELECT username, post, joinDate, title, info FROM users
WHERE userId='18'
JOIN posts ON users.userId=posts.userId
ORDER BY date DESC
我是新手,也许有更好的方法,但我不能弄明白自动取款机。感谢所有的回答!
我想通过一些花哨的排名函数对postgres结果进行排序,但为了简单起见,假设我想添加两个自定义行并按它们排序。
SELECT my_table.*,
extract(epoch from (age(current_date, '2012-09-12 10:43:40'::date)))/3600 AS age_in_hours
Fancy_function_counting_distance() AS distance
FROM my_table
ORDER BY distance + age_in_hours;
但是,它不起作用,因为我收到了错误:ERROR: c