我希望在数据集的结束日期之前以某个领先的时间而不是开始汇总数据.例如,我想查询表格,并在结果中显示的日期结束日期前30天返回匹配结果的计数.原始表仅包含出售日期(时间戳).示例: sales_timestamp ------------------ 2015-08-05 12:00:00 2015-08-06 13:00:00 2015-08-25 12:31:00 2015-08-26 01:02:00 2015-08-27 02:03:00 2015-08-29 04:23:00 2015-09-01 12:00:00 2015-09-02 12:00:00 2015-09-08 00:00:00 产生的查询输出的示例是: date_period | count_of_sales -------------------------------- 2015-08-24 | 2 2015-08-31 | 6 2015-09-07
以下是关于 postgresql-9.1 的编程技术问答
我正在选择数据库的期间列表.如果当前行是第一行,则该期间从日期开始,我可以找到这样的时间间隔开始的: SELECT ... CASE WHEN row_number() OVER(ORDER BY r.created_at ASC) = 1 THEN r.created_at - r.created_at::date ELSE NULL END AS period ... FROM mytable r 我该如何对上次行? 我知道first和last postgresql( https:https:https:https:https:https:https://wiki.postgresql.org/wiki/first/last_(Aggregate)),但它们是汇总功能,在这种情况下无济于事. 编辑: 这个问题有2个很好的答案.在我的情况下,他们俩都没有帮助,因为我作为问题的一部分提出的这一行是更大的查询的一部分,通过编程方式组合在一起,使用提供的解决方案会迫使我改变
我有一个postgresql 9.1数据库,其中包含 timestamp 的表和测量 value '2012-10-25 01:00' 2 '2012-10-25 02:00' 5 '2012-10-25 03:00' 12 '2012-10-25 04:00' 7 '2012-10-25 05:00' 1 ... ... 我需要平均每小时8个小时的范围内值.换句话说,我需要平均1H-8H,2H-9H,3H-10H等. 我不知道如何进行此类查询.我到处都是,但也不知道要寻找什么功能. 我发现的关闭时间是每小时/每日平均或块大小(例如1H-8H,9H-16H等).但是在这些情况下,时间戳是使用date_trunc()函数(如下示例)进行转换的,这对我不使用. 我认为我正在寻找的功能类似于此 SELECT date_trunc('day', timestamp), max(value) FROM
我正在尝试编写一个查询,该查询从指定值开始,直到条件为真,从数据库中"循环".例如,假设我在表中有以下条目: id, parent, cond 1, , True 2, 1 , False 3, 1 , False 4, 2 , False ... ... ... 我想要一个作为输入(例如)4的查询,并将返回2和1的值.该过程是查询与ID匹配的过程,如果cond == false,将查看父( ID = 2).由于cond = false在第二行中,将选择"父" ID(1).现在查看第一行,因为cond = true,循环结束并返回1和2. 我知道查询 SELECT parent FROM example WHERE id = 4; 将产生父ID 2. 因此,我徒劳的尝试创建一个循环: WHILE (SELECT cond FROM example) = False LOOP SELECT parent FR
如果我的分期(2台服务器)或生产(4台服务器)服务器在大约15分钟内没有活动,则会在飞机上遇到以下错误.这是错误消息: ActivereCord :: StatementInvalid:PG ::错误:无法从中接收数据 服务器:连接时间 或 pg ::错误:无法连接到服务器:连接时机是 在主机上运行的服务器" tci-db4.dev.prod"并接受tcp/ip 端口5432上的连接? 我正在使用PostgreSQL作为数据库.其中一台服务器也充当DB服务器. 环境: Ruby 1.9.3 (这也发生在Ruby 1.8.7下,但由于升级而更糟糕当服务器失去数据库连接时. rails 3.1.6 pg gem 0.13.2 Postgres 9.1 phusion乘客 这个问题已经发生了一年多,因此我希望有人对如何解决问题有所了解.谢谢. 解决方案 在应用程序服务器和数据库服务器之间的所有路由器/开关上检查您的TCP
我刚刚在Windows 7上安装了PostgreSQL.我正在尝试将PostgreSQL与Wamp Server集成. 为此,我在httpd.conf和php.ini文件中进行了以下更改 1 loadModule c:/path to libpq.dll in httpd.conf,然后 2 extension=php_mod_pgsql.dll,extension=php_pgsql.dll - php.ini 中的enable(reemove;) 如果我进行上述更改,则本地主机不起作用. 如果我做第二次,则更改了Local -Host的工作,但不会加载libpq.dll. 我通过php脚本检查了PGSQL 脚本显示"是",但是Apache没有加载libpq.dll. 现在,我应该为将postgresql加载到apache2.2*(wam
我有一个与Vagrant设置的VM,该VM在其上运行了Postgres(在端口5432上),转发到主机上的端口8280. 我已经为默认用户设置了密码,我可以在本地连接. 我一直在尝试通过端口8280设置主机机器的访问,而我一直无法将其与" MD5"一起使用作为信任方法. 我已经设置了postgresql.conf聆听所有地址: # postgresql.conf listen_addresses = '*' 我已经配置了pg_hab.conf如下: # pg_hab.conf #TYPE DATABASE USER CIDR-ADDRESS METHOD host all all 0.0.0.0/0 md5 使用所有这些设置,如果我从主机计算机运行以下命令: psql --host=127.0.0.1 --port=8280 --username=postgres -d mydb -c '\l' 我被
我正在尝试连接到访客机器内部的PostgreSQL数据库(使用Vagrant和VirtualBox). 我正在尝试与诱导,但我有一个错误说: Connection Error Could not connect to server: Permission denied Is the server running locally and accepting connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.1234" 我有Vagrant在我的主机机器上向端口1234进行端口. 我的感应连接设置为: Adapter: postgres Host Name: 127.0.0.1 Username: vagrant Password: [i don't have a password for the vagrant user for postgres so leaving empty] Port
我在postgres udf中生成了一个查询字符串,我想在临时表中将其结果放在temp表中(我正在使用LIMIT和OFFSET),我不想加入其他ttable,只是最终在查询计划中的限制运算符时最终将数据切碎.我尝试使用以下语句创建临时表. CREATE LOCAL TEMP TABLE query_result ON COMMIT DROP AS EXECUTE query_string_; 但我收到以下错误通知: ********** Error ********** ERROR: prepared statement "query_string_" does not exist SQL state: 26000 Context: SQL statement "CREATE LOCAL TEMP TABLE query_result ON COMMIT DROP AS EXECUTE query_string_" PL/pgSQL function "search_p
使用以下格式的PostgreSQL URL连接字符串: postgresql://user:secret@localhost 我如何处理该字符串中的特殊字符(例如, $ ),以便当我连接到Postgres数据库时它实际上会起作用? 我尝试过简单地编码它,例如," test $"变为" test%24" ...但是,当我遇到"致命:密码身份验证失败"尝试时,这似乎是一个问题使用它. 解决方案 请参阅文档 您的问题中似乎没有一些事情: uris受到Postgres的支持,因为版本9.2,因此使用9.1客户端完全不应该使用.或者您正在使用实现连接uris本身的客户端. 百分比编码得到支持.每个文档: 编码百分比可以用来包括具有特殊含义的符号 在任何URI零件中. 百分比编码甚至是一美元字符的必需编码. 尝试使用9.3: sql> alter user daniel password 'p$ass'; $ psql 'pos
我有一些" UpSert"类型的问题...但是,我想将其扔出去,因为它与我在Stackoverflow上阅读的任何内容有所不同. 基本问题. 我正在努力从MySQL转到Postgresql 9.1.5(在Heroku上托管).作为其中的一部分,我需要每天导入多个CSV文件.一些数据是销售信息,几乎可以保证是新的,需要插入.但是,数据的其他部分几乎可以保证是相同的.例如,CSV文件(Note Clural)中会有POS(销售点)信息.这很少发生变化(并且很可能仅通过添加).然后是产品信息.大约有10,000种产品(绝大多数将不变,但可以同时增加和更新). 最终项目(但很重要),是我需要能够为任何给定项目提供审核跟踪/信息.例如,如果添加新的POS记录,我需要能够将其追溯到该文件中.到更改来自的导入(和文件). 我正在考虑的解决方案. 由于数据是通过CSV提供给我的,因此我正在围绕复制是最佳/最快的方法的想法.文件中数据的结构并不是我在数据库中(即最终目的地)中
有没有办法将以下字符串转换回人类可读值?我有一些外部数据,其中所有非ASCII字符都被逃脱了. 示例字符串: 16 StringProvider_111=Telefon\u00ED kontakty 17 StringProvider_116=Odpov\u011Bdn\u00E1 osoba 所需的结果: 16 StringProvider_111=Telefoní kontakty 17 StringProvider_116=Odpovědná osoba sqlfiddle 数据库具有utf8编码和整理cs_CZ.UTF-8 解决方案 一个旧技巧是为此目的使用解析器: postgres=# select e'Telefon\u00ED kontakty'; ?column? ------------------- Telefoní kontakty (1 row) CREATE OR REPLACE FUNCT
我刚刚在Ubuntu 12.04服务器上安装了PostgreSQL 9.1(由Amazon EWS托管).当我尝试启动 psql 命令时,显示以下错误消息. psql:无法连接到服务器:没有这样的文件或目录是 服务器在本地运行并接受Unix域上的连接 套接字"/var/run/postgresql/.s.pgsql.5432"? 在网络上搜索后,我发现我必须在使用服务器之前启动服务器.通过跟随此 initdb 链接,我仍然无法使用PostgreSQL数据库.我应该做进一步的工作(例如配置)来启动服务器吗? 我尝试启动服务:服务PostgreSQL Start 另一个错误消息显示: 不存在postgresql群集;请参阅"男人pg_createcluster" 解决方案 我收到了此消息,在Ubuntu 11.04上运行了新安装的Postgres 9.3.完整的消息是: $ sudo /etc/init.d/postgresql start Error:
我有Postgres db 9.1在AWS EC2上运行,ubuntu 12.04. 我对实例搞砸了很多(即安装在9.1之前,已安装了各种Postgres X.X). 现在,经过一个月的DB处理后,我发现,如果我重新启动我的实例postgres无法正确加载,其状态为"运行簇".这将永远持续到i sudo service postgresql restart 来自终端,然后再次工作. 如何将此行添加到Ubuntu启动中,以便每次加载时,它将重新启动此服务,并希望解决我的问题? 也可以解决此问题的任何其他解决方案. 解决方案 我想最好修复数据库启动脚本本身.但是,作为解决的工作,您可以将该行添加到/etc/rc.local中,该行是在Init阶段执行的. 其他解决方案 在Ubuntu 18.04: sudo systemctl restart postgresql.service 其他解决方案 以下命令对我有用 sudo
早上好,集体智能. 我最近不得不通过将原始数据目录文件插入新的安装中来复活PostgreSQL-9.1数据库.我所有的数据都是完整的,除了我无法打开我的PostGIS空间数据. 我能够使用: 在新数据库上启用空间数据 CREATE extension postgis; 但是,尝试访问恢复的空间数据库中的数据会导致错误. 例如, SELECT PostGIS_full_version(); 引发错误: ERROR: could not access file "$libdir/postgis-2.0": No such file or directory SQL state: 58P01 Context: SQL statement "SELECT postgis_lib_version()" PL/pgSQL function "postgis_full_version" line 17 at SQL statement 我已经看过有关该主题
我的问题类似于此一个,但在Linux Mint 15(Ubuntu)中.我已经尝试了标准 COPY public.bio FROM 'tmp/sisinst_bio.csv' DELIMITERS '|' CSV; 我收到此错误: ERROR: could not open file "/tmp/sisinst_bio.csv" for reading: Permission denied 数据库的所有者和用户是postgres. 尝试 (1)创建与ubuntu(zach)的用户帐户相同的用户并更改数据库的所有者. (2)将CSV移至Ubuntu的各个部分 sudo cp -r /home/zach/Documents/Postgres91/sisinst_postgresql_bio_test.csv /usr/share/postgresql/9.1 sudo cp -r /home/zach/Documents/Postgres91/
我想使用Ubuntu 10.04上的主管运行PostgreSQL 9.1.目前,我使用init脚本手动启动PostgreSQL: /etc/init.d/postgresql start 根据这篇文章: http://nicksergeant.com/使用postgresql-with-with-supervisor-on-ubuntu-1010/,我需要修改PostgreSQL配置以使其在TCP端口而不是UNIX插座上运行,以使PostgreSQL与PostgreSql与Postisor一起工作. 我有两个问题: 考虑到这更多的是黑客,是否有任何含义(例如安全/权限,性能等)? 为什么我们不能仅在"主管配置"中运行相同的初始脚本postgresql?相反,如上链接所示,它运行postmaster? 更新: 多亏了下面两个答案的有用建议,我已经为主管设置了一个脚本,以直接调用PostgreSQL: #!/bin/sh # This scri
我最近有了一台新机器,现在想从Github从事我的项目.我很好奇如何在本地计算机上正确设置Postgres数据库.我有postgresql,pgadmin3和libpq-dev在ubuntu上安装(12.04). 我拉下项目: git clone https://github.com/thebenedict/cowsnhills.git 和运行: bundle. 我运行时: rake db:create && rake db:schema:load 我得到此错误: rake db:create && rake db:schema:load FATAL: password authentication failed for user "cnh" FATAL: password authentication failed for user "cnh" .... config/database.yml文件看起来像这样: develo
在Ubuntu中获取此错误消息.在pg_hba.conf文件中,我尝试在不同时代使用" disident"," peer"," peer"," trust"," md5".请帮助. 解决方案 在您的pg_hba.conf 中 # IPv4 local connections: # TYPE DATABASE USER CIDR-ADDRESS METHOD host all all 127.0.0.1/32 trust 如果它不起作用,请尝试 host all all your_ip/32 trust 然后重新启动您的数据库 它可以正常工作 其他解决方案 如果用户名和密码正确,则md5是正确的值.确保重新启动数据库过程,或者至少在修改pg_hba.conf>. 后重新加载配置. 其他解决方案 它可能
在PostgreSQL中,我想存储签名的值-999.9 - 9999.9. 我可以使用numeric(5.1)吗? 或我应该使用哪种类型? 解决方案 您当然可以使用numeric 精度为5,比例为1,就像@simon评论,但使用逗号(,),而不是dot(.) SELECT numeric(5,1) '-999.9' AS nr_lower , numeric(5,1) '9999.9' AS nr_upper; nr_lower | nr_upper ----------+---------- -999.9 | 9999.9 字符串中的负符号和点在字符串中不计入允许的最大数字(precision). 如果您不需要限制长度,只需使用numeric. 如果您需要执行最小和最大值,请添加a 检查约束: CHECK (nr_column BETWEEN -999.9 AND 9999.9) numeric存储您的号码恰好.如果您不需要绝对