Guest User

Untitled

a guest
Oct 20th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. #
  3. # A standalone example of the aggregate method
  4. require 'rubygems'
  5. require 'dm-core'
  6. require 'dm-migrations'
  7. require 'dm-aggregates'
  8.  
  9.  
  10. # setup the logger
  11. DataMapper::Logger.new($stdout, :debug)
  12.  
  13. # connect to the DB
  14. DataMapper.setup(:default, 'sqlite3::memory:')
  15.  
  16. class Example
  17. include DataMapper::Resource
  18.  
  19. # properties
  20. property :id, Serial
  21. property :total, Float
  22. property :name, String
  23. end
  24.  
  25. DataMapper.finalize.auto_migrate!
  26.  
  27. 10.times do |n|
  28. Example.create(:name => (n % 2), :total => n)
  29. end
  30.  
  31. p Example.aggregate(:name, :total.sum)
  32.  
  33.  
  34. __END__
  35.  
  36.  
  37. ~ (0.000102) SELECT sqlite_version(*)
  38. ~ (0.000206) DROP TABLE IF EXISTS "examples"
  39. ~ (0.000024) PRAGMA table_info("examples")
  40. ~ (0.000496) CREATE TABLE "examples" ("id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "total" FLOAT, "name" VARCHAR(50))
  41. ~ (0.000119) INSERT INTO "examples" ("total", "name") VALUES (0.0, '0')
  42. ~ (0.000107) INSERT INTO "examples" ("total", "name") VALUES (1.0, '1')
  43. ~ (0.000090) INSERT INTO "examples" ("total", "name") VALUES (2.0, '0')
  44. ~ (0.000103) INSERT INTO "examples" ("total", "name") VALUES (3.0, '1')
  45. ~ (0.000093) INSERT INTO "examples" ("total", "name") VALUES (4.0, '0')
  46. ~ (0.000088) INSERT INTO "examples" ("total", "name") VALUES (5.0, '1')
  47. ~ (0.000089) INSERT INTO "examples" ("total", "name") VALUES (6.0, '0')
  48. ~ (0.000098) INSERT INTO "examples" ("total", "name") VALUES (7.0, '1')
  49. ~ (0.000090) INSERT INTO "examples" ("total", "name") VALUES (8.0, '0')
  50. ~ (0.000089) INSERT INTO "examples" ("total", "name") VALUES (9.0, '1')
  51. ~ (0.000100) SELECT "name", SUM("total") FROM "examples" GROUP BY "name" ORDER BY "name"
  52. [["0", 20.0], ["1", 25.0]]
Add Comment
Please, Sign In to add comment