小编pet*_*ter的帖子

从SQL查询制作图表的工具

我有一个复杂的Oracle SQL查询,我希望在图表中可视化,以使我的同事可以理解.我试过http://snowflakejoins.com,但它只是呛到它.

有人有更好的建议吗?我更喜欢互联网上的网络应用程序,如果不是Windows的桌面应用程序.

with 
  logs as (
    select 
      l.job_id, 
      l.subjob,
      sum(l.verwerkt) verwerkt, 
      sum(l.errors) errors, 
      max(l.datum) laatst
     from 
      dinf_monitor_logs l, 
      dinf_monitor_jobs j 
     where 
      l.datum>sysdate-j.dagen
      and j.job_id=l.job_id(+)
     group by 
      l.job_id, 
      l.subjob
  ),
  alllogs as (
    select job_id, subjob, max(datum) laatst from dinf_monitor_logs group by job_id, subjob
  )
  select row_number() over(order by alllogs.job_id, alllogs.subjob) r,
    alllogs.job_id,
    alljobs.naam,
    alllogs.subjob,
    logs.verwerkt, 
    logs.errors, 
    alllogs.laatst datum,
    alljobs.wikilink,
    alljobs.loglink,
    alljobs.contact,
    case 
      when alllogs.laatst is null then 1
      when round(sysdate-(alllogs.laatst+alljobs.dagen))<0 then 0
      else round(sysdate-(alllogs.laatst+alljobs.dagen))
    end overtijd,
    case …
Run Code Online (Sandbox Code Playgroud)

sql oracle diagram erd toad

5
推荐指数
1
解决办法
5198
查看次数

MRI Ruby和jRuby之间的性能差异

虽然做了一些基准来回答这个约来连接阵列我感到惊讶的是,当我在使用JRuby也做了同样的基准测试是慢了很多的最快方法问题.

这是否意味着关于jRuby比MRI Ruby更快的旧的慢板已经消失了?或者这是关于如何在jRuby中处理数组?

这里的基准测试结果和MRI Ruby 2.3.0和jRuby 9.1.2.0两者都运行在64位Windows 7盒子上,所有4个处理器忙于50-60%,内存使用±5.5GB.必须使用参数启动jRuby -J-Xmx1500M以提供足够的堆空间.由于堆栈级别太深,我不得不使用push删除测试,并且还删除了最慢的方法,使测试时间不长.使用Jave运行时:1.7.0_21

require 'Benchmark'
N = 100

class Array
  def concat_all 
    self.reduce([], :+)
  end
end

# small arrays
a = (1..10).to_a
b = (11..20).to_a
c = (21..30).to_a

Benchmark.bm do |r|
  r.report('plus       ')  { N.times { a + b + c }}
  r.report('concat     ') { N.times { [].concat(a).concat(b).concat(c) }}
  r.report('splash     ') { N.times {[*a, *b, *c]} }
  r.report('concat_all ')  { N.times { [a, b, c].concat_all }}
  r.report('flat_map   ') { N.times {[a, …
Run Code Online (Sandbox Code Playgroud)

ruby benchmarking rubinius jruby

5
推荐指数
1
解决办法
1293
查看次数

在保持检查输出的同时覆盖 to_s

当我使用 puts 时,我覆盖了 to_s 方法以获得漂亮的输出,但同时我似乎失去了检查对象的能力。有没有办法在覆盖 to_s 的同时获得检查的正常输出?

class Person
  attr_accessor :first, :last, :birthdate
  def initialize(first=nil, last=nil, birthdate=nil)
    @first, @last, @birthdate = first, last, birthdate
  end
  def age
    if birthdate
      Time.now.year-birthdate
    else
      0
    end
  end
  def to_s
    "#{@first} #{@last} (#{age})"
  end
end

me = Person.new("Peter", "Marien", 1962)
p me  >>Peter Marien (50)
p me.inspect  >>"Peter Marien (50)"

#Need #<Person:0x1ec2550 @first="Peter", @last="Marien", @birthdate=1962>
Run Code Online (Sandbox Code Playgroud)

ruby oop overriding

4
推荐指数
1
解决办法
6232
查看次数

在一个文件(如 test/unit)中使用 Rspec

当我有时间的时候,我喜欢在Codewars中接受挑战。到目前为止,我曾经test/unit进行单元测试,但我想Rspec现在使用而不改变我的工作方式。这些都是小方法/文件/测试,所以我喜欢将所有内容都放在一个脚本中。

我使用 Sublime Text 运行几乎所有代码,并在编辑器底部的窗口中获取结果。

这是我的工作test/unit示例

require 'test/unit'

def anagrams(word, words)
  words.select { |w| w.chars.sort == word.chars.sort }
end

class MyTest < Test::Unit::TestCase
  def test_fail
    assert_equal(['aabb', 'bbaa'], anagrams('abba', ['aabb', 'abcd', 'bbaa', 'dada']) )
    assert_equal(['carer', 'racer'], anagrams('racer', ['crazer', 'carer', 'racar', 'caers', 'racer']) )
    assert_equal([], anagrams('laser', ['lazing', 'lazy',  'lacer']) )
  end
end
Run Code Online (Sandbox Code Playgroud)

这在 Sublime 中给出了以下输出

Loaded suite C:/Users/.../codewars/anagram
Started
.

Finished in 0.001 seconds.
------
1 tests, 3 assertions, 0 failures, 0 errors, 0 pendings, …
Run Code Online (Sandbox Code Playgroud)

ruby unit-testing rspec sublimetext3

4
推荐指数
1
解决办法
571
查看次数

为什么这个Ruby方法通过引用传递它的参数

我回答了这个问题并偶然发现了一些奇怪的事情.Ruby通过值传递其参数,但变量本身是引用.那么为什么第一种方法似乎通过引用传递其参数?

require 'set'
require 'benchmark'

def add_item1!(item, list)
  list << item unless list.include?(item)
end

def add_item2(item, list)
  list |= [item]
end

def add_item3(item, list)
  set = Set.new(list)
  set << item
  list = set.to_a
end

array1 = [3,2,1,4]
add_item1!(5, array1)
p array1 # [3, 2, 1, 4, 5]

array2 = [3,2,1,4]
add_item2(5, array2) 
p array2 # [3, 2, 1, 4]

array3 = [3,2,1,4]
add_item3(5, array3)
p array3 # [3, 2, 1, 4]
Run Code Online (Sandbox Code Playgroud)

ruby parameters reference pass-by-reference pass-by-value

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

oracle SQL中的前三个月

我有以下sql给我一份关于人员在过去整整三个月处理的档案的报告,但我想采用它以便我从前三个月获得那些,例如当我现在运行它时我应该从中获取档案2011年1月10日,11日和12日以及2012年1月2日和3日的4月份.有人可以提出如何以最简单的方式处理这个问题的建议.这些报告作为sql存储在数据库中,因此它们应该能够随时运行.

select
 pers_nr "person", 
 to_char(import_dt,'YYMM') "year and month",
 count(pers_nr) "dossiers" 
from 
  rdms_3codon
where
 to_char(import_dt,'YY')*12+to_char(import_dt,'MM') > to_char(sysdate,'YY')*12+to_char(sysdate,'MM')-4
 and to_char(import_dt,'YY')*12+to_char(import_dt,'MM') < to_char(sysdate,'YY')*12+to_char(sysdate,'MM')
group by 
 pers_nr, 
 to_char(import_dt,'YYMM') 
order by
 pers_nr
Run Code Online (Sandbox Code Playgroud)

编辑:

这里的查询增强了Joachim的建议

select 
 pers_nr "person",  
 to_char(import_dt,'YYMM') "year and month", 
 count(pers_nr) "dossiers"  
from  
  rdms_3codon 
where 
 trunc(import_dt) >= trunc(trunc(sysdate, 'Q') -1, 'Q')
 and trunc(import_dt) < trunc(sysdate, 'Q')-1/(24*60*60)
group by  
 pers_nr,  
 to_char(import_dt,'YYMM')  
order by 
 pers_nr 
Run Code Online (Sandbox Code Playgroud)

sql oracle

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

美化查询的输出

我有这个查询,并希望缩进输出并获得最后一列的总和.现在它给了

person                                          |year|dossiers
------------------------------------------------|----|--------
9210124                                         |1110|     166
9210124                                         |1111|     198
9210124                                         |1112|     162
9210161                                         |1110|     183
9210161                                         |1111|     210
9210161                                         |1112|     142
Run Code Online (Sandbox Code Playgroud)

我想拥有

person                                          |year|dossiers
------------------------------------------------|----|--------
9210124                                         |1110|     166
                                                |1111|     198
                                                |1112|     162
9210161                                         |1110|     183
                                                |1111|     210
                                                |1112|     142
total                                                     1061
Run Code Online (Sandbox Code Playgroud)

这里是查询

select  
 pers_nr "person",   
 to_char(import_dt,'YYMM') "year and month",  
 count(pers_nr) "dossiers"   
from   
  rdms_3codon  
where  
 trunc(import_dt) >= trunc(trunc(sysdate, 'Q') -1, 'Q') 
 and trunc(import_dt) < trunc(sysdate, 'Q')-1/(24*60*60) 
group by   
 pers_nr,   
 to_char(import_dt,'YYMM')   
order by  
 pers_nr  
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

sql oracle layout

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

在Ruby中使用浏览器作为GUI

在vbscript中,通常使用浏览器(IE)作为GUI.请参阅下面的示例,它要求输入名称并将其返回给脚本.在Ruby中你有一些像Tcl和Shoes这样的GUI,但我想知道如何在浏览器中这样做.什么是最简单的Ruby解决方案?所以没有exta gems或package,没有已经运行的服务器..如果需要gem,最好是在Windows中运行而没有问题.

这里是vbscript示例

Set web = CreateObject("InternetExplorer.Application")
If web Is Nothing Then
  msgbox("Error while loading Internet Explorer")
  Wscript.Quit
Else
  with web
    .Width = 300
    .Height = 175
    .Offline = True
    .AddressBar = False
    .MenuBar = False
    .StatusBar = False
    .Silent = True
    .ToolBar = False
    .Navigate "about:blank"
    .Visible = True
  end with
End If

'Wait for the browser to navigate to nowhere
Do While web.Busy
  Wscript.Sleep 100
Loop

'Wait for a good reference to the browser document
Set doc = …
Run Code Online (Sandbox Code Playgroud)

ruby vbscript user-interface internet-explorer

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