小编Wel*_*lls的帖子

在GROUP BY中使用LIMIT来获得每组N个结果?

以下查询:

SELECT
year, id, rate
FROM h
WHERE year BETWEEN 2000 AND 2009
AND id IN (SELECT rid FROM table2)
GROUP BY id, year
ORDER BY id, rate DESC
Run Code Online (Sandbox Code Playgroud)

收益率:

year    id  rate
2006    p01 8
2003    p01 7.4
2008    p01 6.8
2001    p01 5.9
2007    p01 5.3
2009    p01 4.4
2002    p01 3.9
2004    p01 3.5
2005    p01 2.1
2000    p01 0.8
2001    p02 12.5
2004    p02 12.4
2002    p02 12.2
2003    p02 10.3
2000    p02 8.7
2006    p02 …
Run Code Online (Sandbox Code Playgroud)

mysql sql ranking greatest-n-per-group

361
推荐指数
8
解决办法
32万
查看次数

了解postgres解释w /位图堆/索引扫描

我有一张450万行的表.没有主键.该表有一个列p_id,类型为整数.idx_mytable_p_id使用该btree方法在此列上有一个索引.我做:

SELECT * FROM mytable WHERE p_id = 123456;
Run Code Online (Sandbox Code Playgroud)

我对此进行了解释并看到以下输出:

Bitmap Heap Scan on mytable  (cost=12.04..1632.35 rows=425 width=321)
  Recheck Cond: (p_id = 543094)
  ->  Bitmap Index Scan on idx_mytable_p_id  (cost=0.00..11.93 rows=425 width=0)
        Index Cond: (p_id = 543094)
Run Code Online (Sandbox Code Playgroud)

问题:

  • 为什么该查询执行堆扫描然后进行位图索引扫描?
  • 为什么要检查425行?为什么操作321的宽度?
  • 告诉我12.04..1632.35和0.00..11.93的费用是多少?

记录有773行,p_id值为123456.有38列mytable.

谢谢!

postgresql

36
推荐指数
2
解决办法
1万
查看次数

线程安全相当于python的time.strptime()?

AttributeError在线程中使用time.strptime()时,我写的东西抛出了很多异常.这似乎只发生在Windows上(不是在Linux上),但无论如何,在'googling中,似乎time.strptime()不被认为是线程安全的.

有没有更好的方法从字符串创建日期时间对象?当前代码如下:

val = DateFromTicks(mktime(strptime(val, '%B %d, %Y')))
Run Code Online (Sandbox Code Playgroud)

但是,这会产生异常,因为它在一个线程内运行.

谢谢!

python

23
推荐指数
2
解决办法
5981
查看次数

postgresql COPY和CSV数据带双引号

CSV行示例:

"2012","Test User","ABC","First","71.0","","","0","0","3","3","0","0","","0","","","","","0.1","","4.0","0.1","4.2","80.8","847"
Run Code Online (Sandbox Code Playgroud)

"First"之后的所有值都是数字列.很多NULL值就是这样引用的,对吧.

尝试COPY:

copy mytable from 'myfile.csv' with csv header quote '"';
Run Code Online (Sandbox Code Playgroud)

不: ERROR: invalid input syntax for type numeric: ""

嗯,是的 它是一个空值.在COPY尝试2:

copy mytable from 'myfile.csv' with csv header quote '"' null '""';
Run Code Online (Sandbox Code Playgroud)

不: ERROR: CSV quote character must not appear in the NULL specification

有什么可以做的?在运行之前删除文件中的所有双引号COPY?可以做到这一点,但我认为这是一个非常普遍的问题的正确解决方案.

postgresql

21
推荐指数
3
解决办法
3万
查看次数

python + SQLAlchemy:使用Session对象删除

我无法弄清楚这一点:我想删除匹配查询中表中的所有记录.有点像这样.

engine = sqlalchemy.create_engine(string)
meta = MetaData(bind=engine)
meta.reflect(bind=engine, schema='myschema')

Base = automap_base(metadata=meta)
Base.prepare(engine, reflect=True)
Classes = Base.classes

Session = sessionmaker(bind=engine)
session = Session()

session.delete(plays.record_id == '123')
Run Code Online (Sandbox Code Playgroud)

但这不起作用.这里有什么想法?我得到的错误是:

error in parsing record ID 020087: Class 'sqlalchemy.sql.elements.BinaryExpression' is not mapped

python sqlalchemy

19
推荐指数
2
解决办法
1万
查看次数

postgres:在WHERE子句中使用CASE和ANY()

有没有办法使这项工作?

SELECT
*
FROM table t
INNER JOIN othertable t2 USING (tid)
WHERE
t.tid =
CASE
    WHEN t2.someboolval THEN ANY(ARRAY[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
    ELSE ANY(ARRAY[77,66])
END
Run Code Online (Sandbox Code Playgroud)

不幸的是我不能这样做,t.tid = CASE WHEN t2.someboolval THEN 1 ELSE 2 END因为我需要匹配一个数组.这可行吗?

sql postgresql

12
推荐指数
2
解决办法
3万
查看次数

基于已安装的python版本导入模块?

我的模块目前导入json模块,该模块仅在2.6中可用.我想对要导入的python版本进行检查simplejson,可以为2.5构建(并且无论如何都是2.6中采用的模块).就像是:

if __version__ 2.5:
    import simplejson as json
else:
    import json
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法来解决这个问题?

python json

11
推荐指数
2
解决办法
5194
查看次数

R:读取文本文件的内容作为查询?

使用R,我只想将文件的内容读入变量,如:

query <- read_file_contents('biglongquery.sql')
Run Code Online (Sandbox Code Playgroud)

为了避免在R脚本本身中放置大的长查询.我希望像CSV(例如读取数据read.tables),etc-只是原始文本.

r

10
推荐指数
1
解决办法
5877
查看次数

HTML5,canvas和strokeRect:线条更窄?

一个愚蠢的简单画布用法:

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

ctx.strokeStyle = "#CCCC00";
ctx.lineWidth = 3;
ctx.strokeRect(0, 0, width, height);
Run Code Online (Sandbox Code Playgroud)

产生一个沿顶部和左边有较窄线条的矩形:

在此输入图像描述

为什么会这样?我需要用填充来抵消吗?它很烦人.

javascript html5 canvas

10
推荐指数
1
解决办法
6901
查看次数

vuejs配置:使用全局变量?

这看起来很愚蠢,但我设置如下:

config/index.js:

module.exports = {
    API_LOCATION: 'http://localhost:8080/api/'
}
Run Code Online (Sandbox Code Playgroud)

然后在src/app.js我有:

import Vue from 'vue'
import VueRouter from 'vue-router'
import VueResource from 'vue-resource';

Vue.use(VueRouter);
Vue.use(VueResource);

const App = require("./app.vue");
const home = require("./components/home.vue");
const config = require('../config');
window.config = config;
Run Code Online (Sandbox Code Playgroud)

然后src/components/home.vue,我有一个脚本块,使用它像这样:

<script>
    module.exports = {
        data: function() {
            return {
                obj: null
            }
        },
        created: function() {
            this.$http.get(config.API_LOCAITON + '/call').then(res => {
                // Do some business
            }, res => {
                // Handle some error
            });
        } …
Run Code Online (Sandbox Code Playgroud)

javascript node.js vue.js

8
推荐指数
2
解决办法
1万
查看次数