{"id":2275,"date":"2013-03-12T09:00:37","date_gmt":"2013-03-12T00:00:37","guid":{"rendered":"http:\/\/www.techscore.com\/blog\/?p=2275"},"modified":"2018-11-14T16:33:55","modified_gmt":"2018-11-14T07:33:55","slug":"%e9%9b%86%e5%90%88%e3%82%92%e8%bf%94%e3%81%99generate_series%e9%96%a2%e6%95%b0%e3%81%a7%e5%a4%a7%e9%87%8f%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92%e7%94%9f%e6%88%90%e3%81%97%e3%81%a6%e9%9b%86%e8%a8%88","status":"publish","type":"post","link":"https:\/\/www.techscore.com\/blog\/2013\/03\/12\/%e9%9b%86%e5%90%88%e3%82%92%e8%bf%94%e3%81%99generate_series%e9%96%a2%e6%95%b0%e3%81%a7%e5%a4%a7%e9%87%8f%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92%e7%94%9f%e6%88%90%e3%81%97%e3%81%a6%e9%9b%86%e8%a8%88\/","title":{"rendered":"PostgreSQL: \u96c6\u5408\u3092\u8fd4\u3059GENERATE_SERIES\u95a2\u6570\u3067\u5927\u91cf\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3057\u3066\u96c6\u8a08\u3059\u308b"},"content":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f\u3001\u9234\u6728\u3067\u3059\u3002<\/p>\n<p>PostgreSQL \u30e6\u30fc\u30b6\u306e\u65b9\uff01<\/p>\n<p>GENERATE_SERIES \u3068\u3044\u3046\u95a2\u6570\u3092\u3054\u5b58\u77e5\u3067\u3057\u3087\u3046\u304b\u3002<\/p>\n<p>&nbsp;<\/p>\n<h2>\u96c6\u5408\u3092\u8fd4\u3059 GENERATE_SERIES \u95a2\u6570<\/h2>\n<p>GENERATE_SERIES \u95a2\u6570\u306f\u5c11\u3057\u5909\u308f\u3063\u3066\u3044\u3066\u3001\u96c6\u5408\u3092\u8fd4\u3059\u95a2\u6570\u3067\u3059\u3002<\/p>\n<p>\u52d5\u4f5c\u3092\u898b\u3066\u3044\u305f\u3060\u3044\u305f\u65b9\u304c\u5206\u304b\u308a\u3084\u3059\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n<pre class=\"lang:default decode:true\"># SELECT GENERATE_SERIES(1, 10);\r\n generate_series\r\n-----------------\r\n               1\r\n               2\r\n               3\r\n               4\r\n               5\r\n               6\r\n               7\r\n               8\r\n               9\r\n              10\r\n(10 rows)<\/pre>\n<p>\u3053\u306e\u3088\u3046\u306b GENERATE_SERIES \u95a2\u6570\u306f\u9023\u7d9a\u5024\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>\u7b2c\u4e09\u5f15\u6570\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u523b\u307f\u5e45\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\"># SELECT GENERATE_SERIES(1, 10, 2);\r\n generate_series \r\n-----------------\r\n               1\r\n               3\r\n               5\r\n               7\r\n               9\r\n(5 rows)<\/pre>\n<p>\u9069\u5f53\u306a\u6f14\u7b97\u3092\u884c\u3046\u3053\u3068\u3067\u3001\u9023\u7d9a\u3059\u308b\u65e5\u4ed8\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\"># SELECT '2000-01-01'::DATE + GENERATE_SERIES(0, 9);\r\n\u00a0 ?column? \u00a0\r\n------------\r\n\u00a02000-01-01\r\n\u00a02000-01-02\r\n\u00a02000-01-03\r\n\u00a02000-01-04\r\n\u00a02000-01-05\r\n\u00a02000-01-06\r\n\u00a02000-01-07\r\n\u00a02000-01-08\r\n\u00a02000-01-09\r\n\u00a02000-01-10\r\n(10 rows)<\/pre>\n<p>\u4e71\u6570\u3092 1000 \u500b\uff01 \u3068\u3044\u3046\u5834\u5408\u306f\u3053\u3046\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\"># SELECT RANDOM() FROM GENERATE_SERIES(1, 1000);\r\n        random        \r\n----------------------\r\n   0.0211320826783776\r\n   0.0161707666702569\r\n    0.944578718394041\r\n...\r\n    0.965048603247851\r\n    0.417635472025722\r\n    0.855229950975627\r\n(1000 rows)<\/pre>\n<p>&nbsp;<\/p>\n<h2>\u30c6\u30b9\u30c8\u7528\u306e\u5927\u91cf\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3059\u308b<\/h2>\n<p>GENERATE_SERIES \u95a2\u6570\u3092\u4f7f\u3046\u3068\u3001\u30c6\u30b9\u30c8\u306b\u4f7f\u7528\u3059\u308b\u5927\u91cf\u30c7\u30fc\u30bf\u3092\u624b\u8efd\u306b\u751f\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u4f8b\u3068\u3057\u3066\u3001\u58f2\u4e0a\u60c5\u5831\u3092\u4fdd\u6301\u3059\u308b sales \u30c6\u30fc\u30d6\u30eb\u304c\u3042\u308b\u3068\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">-- \u58f2\u4e0a\u30c6\u30fc\u30d6\u30eb.\r\nCREATE TABLE sales\r\n(\r\n  -- \u58f2\u4e0a\u65e5.\r\n  sold_on DATE NOT NULL,\r\n\r\n  -- \u58f2\u4e0a\u91d1\u984d.\r\n  amount INTEGER NOT NULL\r\n);<\/pre>\n<p>\u3053\u306e sales \u30c6\u30fc\u30d6\u30eb\u306b\u5927\u91cf\u30c7\u30fc\u30bf\u3092\u767b\u9332\u3057\u305f\u3044\u306e\u3067\u3059\u304c\u3001\u3069\u306e\u3088\u3046\u306a SQL \u3092\u66f8\u3051\u3070\u826f\u3044\u3067\u3057\u3087\u3046\u304b\u3002<\/p>\n<p>\u6bb5\u968e\u7684\u306b\u8003\u3048\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u307e\u305a\u3001\u58f2\u4e0a\u65e5\u3068\u58f2\u4e0a\u91d1\u984d\u306f\u56fa\u5b9a\u306e\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3059\u308b SQL \u3092\u8003\u3048\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u306d\u3002<\/p>\n<pre class=\"lang:default decode:true\">SELECT\r\n  -- \u3068\u308a\u3042\u3048\u305a\u56fa\u5b9a\u306e\u5024\r\n  '2000-01-01'::DATE AS sold_on,\r\n\r\n  -- \u3068\u308a\u3042\u3048\u305a\u56fa\u5b9a\u306e\u5024\r\n  100 AS amount\r\nFROM\r\n  GENERATE_SERIES(1, 10)\r\n;<\/pre>\n<p>\u5b9f\u884c\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u51fa\u529b\u304c\u5f97\u3089\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">  sold_on   | amount\r\n------------+--------\r\n 2000-01-01 |    100\r\n 2000-01-01 |    100\r\n 2000-01-01 |    100\r\n 2000-01-01 |    100\r\n 2000-01-01 |    100\r\n 2000-01-01 |    100\r\n 2000-01-01 |    100\r\n 2000-01-01 |    100\r\n 2000-01-01 |    100\r\n 2000-01-01 |    100\r\n(10 rows)<\/pre>\n<p>\u305d\u308c\u3067\u306f\u3001\u58f2\u4e0a\u65e5\u3068\u58f2\u4e0a\u91d1\u984d\u3092\u4e71\u6570\u3067\u6c7a\u3081\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306a SQL \u306b\u306a\u308b\u3067\u3057\u3087\u3046\u304b\u3002<\/p>\n<pre class=\"lang:default decode:true\">SELECT\r\n  '2000-01-01'::DATE + (RANDOM() * 31)::INTEGER AS sold_on,\r\n  (RANDOM() * 1000)::INTEGER + 1000 AS amount\r\nFROM\r\n  GENERATE_SERIES(1, 10)\r\nORDER BY\r\n  sold_on\r\n;<\/pre>\n<p>\u5b9f\u884c\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">\u00a0 sold_on\u00a0\u00a0 | amount \r\n------------+--------\r\n\u00a02000-01-02 |\u00a0\u00a0 1635\r\n\u00a02000-01-05 |\u00a0\u00a0 1226\r\n\u00a02000-01-05 |\u00a0\u00a0 1827\r\n\u00a02000-01-11 |\u00a0\u00a0 1311\r\n\u00a02000-01-17 |\u00a0\u00a0 1534\r\n\u00a02000-01-22 |\u00a0\u00a0 1482\r\n\u00a02000-01-25 |\u00a0\u00a0 1003\r\n\u00a02000-01-26 |\u00a0\u00a0 1903\r\n\u00a02000-01-27 |\u00a0\u00a0 1441\r\n\u00a02000-01-30 |\u00a0\u00a0 1059\r\n(10 rows)<\/pre>\n<p>\u826f\u3055\u305d\u3046\u306a\u5024\u304c\u751f\u6210\u51fa\u6765\u307e\u3057\u305f\u306e\u3067\u3001\u305d\u308c\u3092 sales \u30c6\u30fc\u30d6\u30eb\u306b INSERT \u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">INSERT INTO\r\n  sales (sold_on, amount)\r\nSELECT\r\n  '2000-01-01'::DATE + (RANDOM() * 31)::INTEGER AS sold_on,\r\n  (RANDOM() * 1000)::INTEGER + 1000 AS amount\r\nFROM\r\n  -- 100 \u4ef6\u751f\u6210\u3059\u308b\u3088\u3046\u306b\u5909\u66f4\r\n  GENERATE_SERIES(1, 100)\r\nORDER BY\r\n  sold_on\r\n;<\/pre>\n<p>\u5b9f\u884c\u3059\u308b\u3068\u3001sales \u30c6\u30fc\u30d6\u30eb\u306b 100 \u4ef6\u306e\u30ec\u30b3\u30fc\u30c9\u304c\u767b\u9332\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">INSERT 0 100<\/pre>\n<p>sales \u30c6\u30fc\u30d6\u30eb\u3092 SELECT \u3059\u308b\u3068\u3001\u78ba\u304b\u306b 100 \u4ef6\u306e\u30ec\u30b3\u30fc\u30c9\u304c\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\"># SELECT * FROM sales;\r\n\u00a0 sold_on\u00a0\u00a0 | amount \r\n------------+--------\r\n\u00a02000-01-02 |\u00a0\u00a0 1777\r\n\u00a02000-01-02 |\u00a0\u00a0 1067\r\n\u00a02000-01-02 |\u00a0\u00a0 1451\r\n...\r\n\u00a02000-01-30 |\u00a0\u00a0 1661\r\n\u00a02000-01-30 |\u00a0\u00a0 1419\r\n\u00a02000-01-31 |\u00a0\u00a0 1583\r\n(100 rows)<\/pre>\n<p>\u826f\u3055\u305d\u3046\u306a\u611f\u3058\u3067\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<h2>\u65e5\u5225\u306e\u58f2\u4e0a\u91d1\u984d\u3092\u6c42\u3081\u308b<\/h2>\n<p>\u305b\u3063\u304b\u304f sales \u30c6\u30fc\u30d6\u30eb\u306b\u5927\u91cf\u30c7\u30fc\u30bf\u3092\u767b\u9332\u3057\u305f\u306e\u3067\u3001\u65e5\u5225\u306e\u58f2\u4e0a\u91d1\u984d\u3092\u6c42\u3081\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u65e5\u5225\u306e\u58f2\u4e0a\u91d1\u984d\u3092\u6c42\u3081\u308b SQL \u306f\u3053\u3093\u306a\u611f\u3058\u306b\u306a\u308b\u3067\u3057\u3087\u3046\u304b\u3002\u3002<\/p>\n<pre class=\"lang:default decode:true\">SELECT\r\n  sold_on,\r\n  SUM(amount)\r\nFROM\r\n  sales\r\nGROUP BY\r\n  sold_on\r\nORDER BY\r\n  sold_on\r\n;<\/pre>\n<p>\u5b9f\u884c\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"lang:default decode:true\">  sold_on   |  sum  \r\n------------+-------\r\n 2000-01-02 | 10122\r\n 2000-01-03 |  4419\r\n 2000-01-04 |  7233\r\n 2000-01-05 |  4708\r\n 2000-01-06 |  2579\r\n 2000-01-07 |  1632\r\n 2000-01-08 |  2811\r\n 2000-01-09 |  4669\r\n 2000-01-10 |  5631\r\n 2000-01-11 |  4732\r\n 2000-01-12 |  1213\r\n 2000-01-13 |  3990\r\n 2000-01-14 |  3881\r\n 2000-01-15 |  6823\r\n 2000-01-16 | 10128\r\n 2000-01-17 |  7330\r\n 2000-01-19 |  8152\r\n 2000-01-20 |  1981\r\n 2000-01-21 |  8249\r\n 2000-01-22 |  4629\r\n 2000-01-23 |  6796\r\n 2000-01-25 |  2210\r\n 2000-01-26 |  6969\r\n 2000-01-27 | 15518\r\n 2000-01-28 |  5734\r\n 2000-01-29 |  4212\r\n 2000-01-30 |  4520\r\n 2000-01-31 |  1583\r\n(28 rows)<\/pre>\n<p>\u65e5\u4ed8\u306b\u629c\u3051\u304c\u51fa\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u30fb\u30fb\u3002<\/p>\n<p>\u58f2\u4e0a\u304c\u7121\u3044\u65e5\u304c\u3042\u308b\u5834\u5408\u3082\u8003\u616e\u3057\u3066\u304a\u304b\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002<\/p>\n<p>GENERATE_SERIES \u95a2\u6570\u3092\u7528\u3044\u3066\u3001\u671f\u5f85\u3059\u308b\u7d50\u679c\u304c\u5f97\u3089\u308c\u308b\u3088\u3046\u306a SQL \u306b\u66f8\u304d\u76f4\u3059\u3068\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">SELECT\r\n  dates.day,\r\n  (SELECT SUM(amount) FROM sales WHERE sold_on=dates.day) AS amount\r\nFROM\r\n  (SELECT '2000-01-01'::DATE + GENERATE_SERIES(0, 30) AS day) AS dates\r\n;<\/pre>\n<p>\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">    day     | amount \r\n------------+--------\r\n 2000-01-01 |       \r\n 2000-01-02 |  10122\r\n 2000-01-03 |   4419\r\n 2000-01-04 |   7233\r\n 2000-01-05 |   4708\r\n 2000-01-06 |   2579\r\n 2000-01-07 |   1632\r\n 2000-01-08 |   2811\r\n 2000-01-09 |   4669\r\n 2000-01-10 |   5631\r\n 2000-01-11 |   4732\r\n 2000-01-12 |   1213\r\n 2000-01-13 |   3990\r\n 2000-01-14 |   3881\r\n 2000-01-15 |   6823\r\n 2000-01-16 |  10128\r\n 2000-01-17 |   7330\r\n 2000-01-18 |       \r\n 2000-01-19 |   8152\r\n 2000-01-20 |   1981\r\n 2000-01-21 |   8249\r\n 2000-01-22 |   4629\r\n 2000-01-23 |   6796\r\n 2000-01-24 |       \r\n 2000-01-25 |   2210\r\n 2000-01-26 |   6969\r\n 2000-01-27 |  15518\r\n 2000-01-28 |   5734\r\n 2000-01-29 |   4212\r\n 2000-01-30 |   4520\r\n 2000-01-31 |   1583\r\n(31 rows)<\/pre>\n<p>\u671f\u5f85\u3059\u308b\u7d50\u679c\u304c\u5f97\u3089\u308c\u307e\u3057\u305f\uff01<\/p>\n<p>&nbsp;<\/p>\n<h2>\u307e\u3068\u3081<\/h2>\n<p>\u4eca\u56de\u306f PostgreSQL \u306e GENERATE_SERIES \u95a2\u6570\u3092\u30d4\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u3066\u3054\u7d39\u4ecb\u3057\u307e\u3057\u305f\u304c\u3001\u3042\u308b\u3053\u3068\u3092\u9054\u6210\u3059\u308b SQL \u306e\u66f8\u304d\u65b9\u306f\u3072\u3068\u901a\u308a\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002\u3053\u3093\u306a\u3084\u308a\u65b9\u3082\u3042\u308b\u3093\u3060\u3001\u3068\u601d\u3063\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u5e78\u3044\u3067\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f\u3001\u9234\u6728\u3067\u3059\u3002<\/p>\n<p>PostgreSQL \u30e6\u30fc\u30b6\u306e\u65b9\uff01<\/p>\n<p>GENERATE_SERIES \u3068\u3044\u3046\u95a2\u6570\u3092\u3054\u5b58\u77e5\u3067\u3057\u3087\u3046\u304b\u3002<br \/><a href=\"https:\/\/www.techscore.com\/blog\/2013\/03\/12\/%e9%9b%86%e5%90%88%e3%82%92%e8%bf%94%e3%81%99generate_series%e9%96%a2%e6%95%b0%e3%81%a7%e5%a4%a7%e9%87%8f%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92%e7%94%9f%e6%88%90%e3%81%97%e3%81%a6%e9%9b%86%e8%a8%88\/\">\u7d9a\u304d\u3092\u8aad\u3080...<\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[18],"tags":[206,93,92],"_links":{"self":[{"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/posts\/2275"}],"collection":[{"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/comments?post=2275"}],"version-history":[{"count":1,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/posts\/2275\/revisions"}],"predecessor-version":[{"id":17945,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/posts\/2275\/revisions\/17945"}],"wp:attachment":[{"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/media?parent=2275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/categories?post=2275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/tags?post=2275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}