このディレクトリの索引

% 以下のサイトは # 出典 :: SQL質疑応答スレ 12問目 #365 # ・DB名:Firebird1.03 # ・テーブル #  ■メイン #   受注番号 受注日 注文社 #   11    2011/12/20 A社 #   12    2011/12/21 B社 #  ■サブ #   連番 受注番号 商品コード 数 #   50  11    A10    100 #   51  11    C30    20 #   52  12    A10    10 #  ■商品 #   商品コード 商品名 カテゴリ 納品番号(商品ごとで重複していません) #   A10     コート 洋服   100 #   C30     帯   和服   504 # # メインの受注番号とサブの受注番号、サブの商品コードと商品の商品コードで # リンクしています。 # # 欲しい結果 # 受注日の期間(いつからいつまで)と、商品のカテゴリと納品番号で、 # 受注の全内容(商品)が知りたいです。 # 受注日:2011/12/01から12/31まで # カテゴリ:洋服 納品番号:100で検索をして # # 受注番号 受注日 注文者 商品コード 商品名 数量 # 11    2011/12/20 A社 A10    コート 100 # 11    2011/12/20 A社 C30    帯   20----★ # 12    2011/12/21 B社 A10    コート 10 # ★受注の全内容が知りたいので、該当する受注番号のサブはすべて表示 # したい。メインの内容は重複表示となります。 # # 丸投げですみませんが、どなたかSQL文をお願いできませんでしょうか。 # テーブルが3つになるとどうしてよいものかわからないです。 # よろしくお願いします。 # # # メイン(11,2011/12/20,'A社'). メイン(12,2011/12/21,'B社'). サブ(50,11,'A10',100). サブ(51,11,'C30',20). サブ(52,12,'A10',10). 商品('A10',コート,洋服,100). 商品('C30',帯,和服,504). '受注日の期間(いつからいつまで)と、商品の商品カテゴリと納品番号で、受注の全内容(商品)が知りたい'(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号) :- '受注番号候補を得て、それを鍵に、データベースから選択する'(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,LL1), 受注番号順に表示する(LL1). '受注番号候補を得て、それを鍵に、データベースから選択する'(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,LL1) :- 受注番号候補を得る(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,_受注番号ならび), 'それを鍵に、データベースから選択する'(_受注番号ならび,LL1). 受注番号候補を得る(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,_受注番号ならび) :- setof(_受注番号, [_受注番号,_受注日,_注文社,_受注日,_受注日下限,_受注日上限,_連番,_受注番号,_商品コード,_数量,_商品名,_商品カテゴリ,_納品番号] ^ ( '受注日範囲のメインの受注番号からサブ・商品を結合可能な受注番号'(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,_受注番号)),_受注番号ならび). '受注日範囲のメインの受注番号からサブ・商品を結合可能な受注番号'(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,_受注番号) :- 受注日範囲のメインの受注番号から(_受注日下限,_受注日上限,_受注番号,_受注日,_注文社), 'サブ・商品を結合可能な受注番号'(_受注番号,_受注日,_注文社,_連番,_受注番号,_商品コード,_数量,_商品名,_商品カテゴリ,_納品番号). 受注日範囲のメインの受注番号から(_受注日下限,_受注日上限,_受注番号,_受注日,_注文社) :- メイン(_受注番号,_受注日,_注文社), _受注日 @>= _受注日下限, _受注日 @=< _受注日上限. 'サブ・商品を結合可能な受注番号'(_受注番号,_受注日,_注文社,_連番,_受注番号,_商品コード,_数量,_商品名,_商品カテゴリ,_納品番号) :- サブ(_連番,_受注番号,_商品コード,_数量), 商品(_商品コード,_商品名,_商品カテゴリ,_納品番号). 'それを鍵に、データベースから選択する'(_受注番号ならび,LL1) :- findall([_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量],( append(_,[_受注番号|_],_受注番号ならび), 受注番号を鍵にデータベースからの選択(_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量)),LL1). 受注番号を鍵にデータベースを結合(_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量) :- メイン(_受注番号,_受注日,_注文社), サブ(_連番,_受注番号,_商品コード,_数量), 商品(_商品コード,_商品名,_商品カテゴリ,_納品番号). 受注番号順に表示する(LL1) :- 整列(LL1,LL2), 表示する(LL2). 表示する(LL) :- 見出しを表示する, forall(append(_,[[_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量]|_],LL), writef('%10l %8l %8c %8c %8c %14l %8r\n',[_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量])). 見出しを表示する :- write('受注番号 受注日 注文者 商品コード 商品名 数量\n'). % 以下のサイトは # 出典 :: SQL質疑応答スレ 12問目 #773 # ・DBMS名とバージョン: Access2003 # ・テーブルデータ: ID、作業開始日、作業完了日、作業区分 # ・欲しい結果 #  一定期間の作業開始日及び作業完了日を日付別にカウントしたい。 # ・説明 # 例えば、2012/06/01から2012/06/07の期間を指定した場合、以下の様に取得したい。 # # 日付     作業開始 作業完了 # 2012/06/01    10      10 # 2012/06/02     5      5 # 2012/06/03    20      15 # 2012/06/04    21      20 # 2012/06/05     7      10 # 2012/06/06    10      15 # 2012/06/07     4      10 # # '一定期間の作業開始及び作業完了を日付別に作業開始・終了度数を得る'(_期間日下限,_期間日上限,_日付,_作業開始度数,_作業終了度数) :- 一定期間の作業開始及び作業完了を(_期間日下限,_期間日上限,_日付ならび), '日付別に作業開始・終了度数を得る'(_日付ならび,_日付,_作業開始度数,_作業終了度数). 一定期間の作業開始及び作業完了を(_期間日下限,_期間日上限,_日付ならび) :- setof(_日付,[_ID,_作業開始日,_作業完了日,_作業区分,_期間日下限,_期間日上限,_日付] ^ ( テーブルデータの作業開始日か作業完了日が期間内(_期間日下限,_期間日上限,_作業開始日,_作業完了日,_日付)),_日付ならび). テーブルデータの作業開始日か作業完了日が期間内(_期間日下限,_期間日上限,_作業開始日,_作業完了日,_日付) :- テーブルデータ(_ID,_作業開始日,_作業完了日,_作業区分), 作業開始日か作業完了日が期間内(_期間日下限,_期間日上限,_作業開始日,_作業完了日,_日付). 作業開始日か作業完了日が期間内(_期間日下限,_期間日上限,_作業開始日,_作業完了日,_作業開始日) :- _作業開始日 @>= _期間日下限, _作業開始日 @=< _期間日上限. 作業開始日か作業完了日が期間内(_期間日下限,_期間日上限,_作業開始日,_作業完了日,_作業完了日) :- _作業完了日 @>= _期間日下限, _作業完了日 @=< _期間日上限. '日付別に作業開始・終了度数を得る'(_日付ならび,_日付,_作業開始度数,_作業終了度数) :- 日付別に(_日付ならび,_日付), '作業開始・終了度数を得る'(_日付,_作業開始度数,_作業終了度数). 日付別に(_日付ならび,_日付) :- member(_日付,_日付ならび). '作業開始・終了度数を得る'(_日付,_作業開始度数,_作業終了度数) :- 度数(テーブルデータ(_,_日付,_,_),_作業開始度数), 度数(テーブルデータ(_,_,_日付,_),_作業終了度数). 度数(_目標,_度数) :- findall(1,_目標,L), length(L,_度数). テーブルデータ(1,'20120401','20120517','A'). テーブルデータ(2,'20120401','20120528','A'). テーブルデータ(3,'20120401','20120526','A'). テーブルデータ(4,'20120401','20120524','A'). テーブルデータ(5,'20120401','20120526','A'). テーブルデータ(6,'20120401','20120517','A'). テーブルデータ(7,'20120401','20120413','A'). テーブルデータ(8,'20120401','20120410','A'). テーブルデータ(9,'20120401','20120402','A'). テーブルデータ(10,'20120401','20120403','A'). テーブルデータ(11,'20120401','20120408','A'). テーブルデータ(12,'20120401','20120521','A'). テーブルデータ(13,'20120401','20120420','A'). テーブルデータ(14,'20120401','20120424','A'). テーブルデータ(15,'20120402','20120402','A'). テーブルデータ(16,'20120402','20120408','A'). テーブルデータ(17,'20120402','20120524','A'). テーブルデータ(18,'20120402','20120418','A'). テーブルデータ(19,'20120402','20120413','A'). テーブルデータ(20,'20120402','20120410','A'). テーブルデータ(21,'20120402','20120429','A'). テーブルデータ(22,'20120402','20120411','A'). テーブルデータ(23,'20120402','20120404','A'). テーブルデータ(24,'20120402','20120522','A'). テーブルデータ(25,'20120402','20120404','A'). テーブルデータ(26,'20120402','20120515','A'). テーブルデータ(27,'20120402','20120409','A'). テーブルデータ(28,'20120402','20120527','A'). テーブルデータ(29,'20120402','20120501','A'). テーブルデータ(30,'20120402','20120514','A'). テーブルデータ(31,'20120402','20120514','A'). テーブルデータ(32,'20120403','20120502','A'). テーブルデータ(33,'20120403','20120430','A'). テーブルデータ(34,'20120403','20120416','A'). テーブルデータ(35,'20120403','20120419','A'). テーブルデータ(36,'20120403','20120504','A'). テーブルデータ(37,'20120403','20120425','A'). テーブルデータ(38,'20120403','20120412','A'). テーブルデータ(39,'20120403','20120506','A'). テーブルデータ(40,'20120403','20120424','A'). テーブルデータ(41,'20120403','20120601','A'). テーブルデータ(42,'20120403','20120517','A'). テーブルデータ(43,'20120403','20120510','A'). テーブルデータ(44,'20120403','20120511','A'). テーブルデータ(45,'20120403','20120517','A'). テーブルデータ(46,'20120403','20120508','A'). テーブルデータ(47,'20120403','20120503','A'). テーブルデータ(48,'20120403','20120526','A'). テーブルデータ(49,'20120403','20120519','A'). テーブルデータ(50,'20120403','20120504','A'). テーブルデータ(51,'20120404','20120530','A'). テーブルデータ(52,'20120404','20120507','A'). テーブルデータ(53,'20120404','20120406','A'). テーブルデータ(54,'20120404','20120524','A'). テーブルデータ(55,'20120404','20120420','A'). テーブルデータ(56,'20120404','20120405','A'). テーブルデータ(57,'20120404','20120519','A'). テーブルデータ(58,'20120404','20120519','A'). テーブルデータ(59,'20120404','20120518','A'). テーブルデータ(60,'20120404','20120501','A'). テーブルデータ(61,'20120404','20120530','A'). テーブルデータ(62,'20120404','20120409','A'). テーブルデータ(63,'20120404','20120520','A'). テーブルデータ(64,'20120404','20120413','A'). テーブルデータ(65,'20120404','20120417','A'). テーブルデータ(66,'20120404','20120421','A'). テーブルデータ(67,'20120404','20120428','A'). テーブルデータ(68,'20120404','20120419','A'). テーブルデータ(69,'20120404','20120516','A'). テーブルデータ(70,'20120404','20120519','A'). テーブルデータ(71,'20120404','20120418','A'). テーブルデータ(72,'20120405','20120419','A'). テーブルデータ(73,'20120405','20120519','A'). テーブルデータ(74,'20120405','20120408','A'). テーブルデータ(75,'20120405','20120525','A'). テーブルデータ(76,'20120405','20120412','A'). テーブルデータ(77,'20120405','20120523','A'). テーブルデータ(78,'20120405','20120511','A'). テーブルデータ(79,'20120405','20120513','A'). テーブルデータ(80,'20120405','20120413','A'). テーブルデータ(81,'20120405','20120429','A'). テーブルデータ(82,'20120405','20120408','A'). テーブルデータ(83,'20120405','20120416','A'). テーブルデータ(84,'20120405','20120419','A'). テーブルデータ(85,'20120405','20120424','A'). テーブルデータ(86,'20120405','20120417','A'). テーブルデータ(87,'20120405','20120405','A'). テーブルデータ(88,'20120405','20120531','A'). テーブルデータ(89,'20120405','20120523','A'). テーブルデータ(90,'20120405','20120424','A'). テーブルデータ(91,'20120405','20120527','A'). テーブルデータ(92,'20120405','20120521','A'). テーブルデータ(93,'20120405','20120411','A'). テーブルデータ(94,'20120405','20120529','A'). テーブルデータ(95,'20120405','20120603','A'). テーブルデータ(96,'20120405','20120420','A'). テーブルデータ(97,'20120405','20120415','A'). テーブルデータ(98,'20120405','20120419','A'). テーブルデータ(99,'20120405','20120602','A'). テーブルデータ(100,'20120406','20120427','A'). テーブルデータ(101,'20120406','20120423','A'). テーブルデータ(102,'20120406','20120408','A'). テーブルデータ(103,'20120406','20120602','A'). テーブルデータ(104,'20120406','20120418','A'). テーブルデータ(105,'20120406','20120528','A'). テーブルデータ(106,'20120406','20120601','A'). テーブルデータ(107,'20120406','20120407','A'). テーブルデータ(108,'20120406','20120426','A'). テーブルデータ(109,'20120406','20120502','A'). テーブルデータ(110,'20120406','20120407','A'). テーブルデータ(111,'20120406','20120521','A'). テーブルデータ(112,'20120406','20120505','A'). テーブルデータ(113,'20120406','20120410','A'). テーブルデータ(114,'20120406','20120604','A'). テーブルデータ(115,'20120406','20120516','A'). テーブルデータ(116,'20120406','20120415','A'). テーブルデータ(117,'20120406','20120527','A'). テーブルデータ(118,'20120407','20120603','A'). テーブルデータ(119,'20120407','20120418','A'). テーブルデータ(120,'20120407','20120428','A'). テーブルデータ(121,'20120407','20120512','A'). テーブルデータ(122,'20120407','20120416','A'). テーブルデータ(123,'20120407','20120414','A'). テーブルデータ(124,'20120407','20120504','A'). テーブルデータ(125,'20120407','20120423','A'). テーブルデータ(126,'20120408','20120511','A'). テーブルデータ(127,'20120408','20120414','A'). テーブルデータ(128,'20120408','20120413','A'). テーブルデータ(129,'20120408','20120524','A'). テーブルデータ(130,'20120408','20120501','A'). テーブルデータ(131,'20120408','20120606','A'). テーブルデータ(132,'20120408','20120522','A'). テーブルデータ(133,'20120408','20120506','A'). テーブルデータ(134,'20120408','20120529','A'). テーブルデータ(135,'20120408','20120510','A'). テーブルデータ(136,'20120408','20120507','A'). テーブルデータ(137,'20120408','20120411','A'). テーブルデータ(138,'20120408','20120606','A'). テーブルデータ(139,'20120408','20120508','A'). テーブルデータ(140,'20120408','20120526','A'). テーブルデータ(141,'20120408','20120506','A'). テーブルデータ(142,'20120408','20120513','A'). テーブルデータ(143,'20120408','20120518','A'). テーブルデータ(144,'20120409','20120515','A'). テーブルデータ(145,'20120409','20120502','A'). テーブルデータ(146,'20120409','20120517','A'). テーブルデータ(147,'20120409','20120504','A'). テーブルデータ(148,'20120409','20120505','A'). テーブルデータ(149,'20120409','20120530','A'). テーブルデータ(150,'20120409','20120410','A'). テーブルデータ(151,'20120409','20120514','A'). テーブルデータ(152,'20120409','20120607','A'). テーブルデータ(153,'20120409','20120507','A'). テーブルデータ(154,'20120410','20120418','A'). テーブルデータ(155,'20120410','20120411','A'). テーブルデータ(156,'20120410','20120530','A'). テーブルデータ(157,'20120410','20120423','A'). テーブルデータ(158,'20120410','20120520','A'). テーブルデータ(159,'20120410','20120424','A'). テーブルデータ(160,'20120410','20120414','A'). テーブルデータ(161,'20120410','20120504','A'). テーブルデータ(162,'20120410','20120514','A'). テーブルデータ(163,'20120410','20120527','A'). テーブルデータ(164,'20120410','20120605','A'). テーブルデータ(165,'20120410','20120413','A'). テーブルデータ(166,'20120410','20120531','A'). テーブルデータ(167,'20120410','20120527','A'). テーブルデータ(168,'20120410','20120505','A'). テーブルデータ(169,'20120411','20120427','A'). テーブルデータ(170,'20120411','20120602','A'). テーブルデータ(171,'20120411','20120422','A'). テーブルデータ(172,'20120411','20120428','A'). テーブルデータ(173,'20120411','20120509','A'). テーブルデータ(174,'20120411','20120516','A'). テーブルデータ(175,'20120411','20120528','A'). テーブルデータ(176,'20120411','20120604','A'). テーブルデータ(177,'20120411','20120412','A'). テーブルデータ(178,'20120411','20120519','A'). テーブルデータ(179,'20120412','20120511','A'). テーブルデータ(180,'20120412','20120519','A'). テーブルデータ(181,'20120412','20120427','A'). テーブルデータ(182,'20120412','20120425','A'). テーブルデータ(183,'20120412','20120520','A'). テーブルデータ(184,'20120412','20120420','A'). テーブルデータ(185,'20120412','20120415','A'). テーブルデータ(186,'20120412','20120602','A'). テーブルデータ(187,'20120412','20120530','A'). テーブルデータ(188,'20120412','20120421','A'). テーブルデータ(189,'20120412','20120607','A'). テーブルデータ(190,'20120412','20120416','A'). テーブルデータ(191,'20120412','20120525','A'). テーブルデータ(192,'20120412','20120525','A'). テーブルデータ(193,'20120412','20120604','A'). テーブルデータ(194,'20120412','20120520','A'). テーブルデータ(195,'20120412','20120508','A'). テーブルデータ(196,'20120412','20120522','A'). テーブルデータ(197,'20120412','20120416','A'). テーブルデータ(198,'20120412','20120609','A'). テーブルデータ(199,'20120412','20120530','A'). テーブルデータ(200,'20120412','20120530','A'). テーブルデータ(201,'20120412','20120421','A'). テーブルデータ(202,'20120412','20120608','A'). テーブルデータ(203,'20120412','20120429','A'). テーブルデータ(204,'20120412','20120518','A'). テーブルデータ(205,'20120413','20120416','A'). テーブルデータ(206,'20120413','20120513','A'). テーブルデータ(207,'20120413','20120506','A'). テーブルデータ(208,'20120413','20120602','A'). テーブルデータ(209,'20120413','20120611','A'). テーブルデータ(210,'20120413','20120604','A'). テーブルデータ(211,'20120413','20120418','A'). テーブルデータ(212,'20120413','20120417','A'). テーブルデータ(213,'20120413','20120513','A'). テーブルデータ(214,'20120413','20120418','A'). テーブルデータ(215,'20120413','20120611','A'). テーブルデータ(216,'20120413','20120427','A'). テーブルデータ(217,'20120413','20120529','A'). テーブルデータ(218,'20120413','20120422','A'). テーブルデータ(219,'20120413','20120415','A'). テーブルデータ(220,'20120414','20120528','A'). テーブルデータ(221,'20120414','20120521','A'). テーブルデータ(222,'20120414','20120511','A'). テーブルデータ(223,'20120414','20120429','A'). テーブルデータ(224,'20120414','20120418','A'). テーブルデータ(225,'20120414','20120422','A'). テーブルデータ(226,'20120414','20120425','A'). テーブルデータ(227,'20120414','20120416','A'). テーブルデータ(228,'20120414','20120601','A'). テーブルデータ(229,'20120414','20120612','A'). テーブルデータ(230,'20120414','20120417','A'). テーブルデータ(231,'20120414','20120530','A'). テーブルデータ(232,'20120414','20120422','A'). テーブルデータ(233,'20120415','20120507','A'). テーブルデータ(234,'20120415','20120426','A'). テーブルデータ(235,'20120415','20120425','A'). テーブルデータ(236,'20120415','20120530','A'). テーブルデータ(237,'20120415','20120416','A'). テーブルデータ(238,'20120415','20120416','A'). テーブルデータ(239,'20120415','20120515','A'). テーブルデータ(240,'20120415','20120612','A'). テーブルデータ(241,'20120415','20120420','A'). テーブルデータ(242,'20120415','20120415','A'). テーブルデータ(243,'20120415','20120610','A'). テーブルデータ(244,'20120416','20120422','A'). テーブルデータ(245,'20120416','20120528','A'). テーブルデータ(246,'20120416','20120421','A'). テーブルデータ(247,'20120416','20120424','A'). テーブルデータ(248,'20120416','20120502','A'). テーブルデータ(249,'20120417','20120525','A'). テーブルデータ(250,'20120417','20120531','A'). テーブルデータ(251,'20120417','20120613','A'). テーブルデータ(252,'20120417','20120529','A'). テーブルデータ(253,'20120417','20120531','A'). テーブルデータ(254,'20120417','20120417','A'). テーブルデータ(255,'20120417','20120523','A'). テーブルデータ(256,'20120417','20120519','A'). テーブルデータ(257,'20120417','20120615','A'). テーブルデータ(258,'20120417','20120526','A'). テーブルデータ(259,'20120417','20120427','A'). テーブルデータ(260,'20120417','20120425','A'). テーブルデータ(261,'20120417','20120428','A'). テーブルデータ(262,'20120418','20120429','A'). テーブルデータ(263,'20120418','20120509','A'). テーブルデータ(264,'20120418','20120428','A'). テーブルデータ(265,'20120418','20120501','A'). テーブルデータ(266,'20120419','20120529','A'). テーブルデータ(267,'20120419','20120422','A'). テーブルデータ(268,'20120419','20120508','A'). テーブルデータ(269,'20120419','20120530','A'). テーブルデータ(270,'20120419','20120617','A'). テーブルデータ(271,'20120419','20120505','A'). テーブルデータ(272,'20120419','20120528','A'). テーブルデータ(273,'20120419','20120522','A'). テーブルデータ(274,'20120419','20120502','A'). テーブルデータ(275,'20120419','20120606','A'). テーブルデータ(276,'20120419','20120608','A'). テーブルデータ(277,'20120419','20120613','A'). テーブルデータ(278,'20120419','20120515','A'). テーブルデータ(279,'20120419','20120515','A'). テーブルデータ(280,'20120419','20120602','A'). テーブルデータ(281,'20120420','20120430','A'). テーブルデータ(282,'20120421','20120527','A'). テーブルデータ(283,'20120421','20120602','A'). テーブルデータ(284,'20120421','20120527','A'). テーブルデータ(285,'20120421','20120428','A'). テーブルデータ(286,'20120421','20120605','A'). テーブルデータ(287,'20120421','20120527','A'). テーブルデータ(288,'20120421','20120510','A'). テーブルデータ(289,'20120421','20120509','A'). テーブルデータ(290,'20120421','20120607','A'). テーブルデータ(291,'20120421','20120523','A'). テーブルデータ(292,'20120421','20120519','A'). テーブルデータ(293,'20120421','20120612','A'). テーブルデータ(294,'20120421','20120530','A'). テーブルデータ(295,'20120421','20120430','A'). テーブルデータ(296,'20120421','20120616','A'). テーブルデータ(297,'20120422','20120603','A'). テーブルデータ(298,'20120422','20120608','A'). テーブルデータ(299,'20120422','20120428','A'). テーブルデータ(300,'20120422','20120513','A'). テーブルデータ(301,'20120422','20120505','A'). テーブルデータ(302,'20120422','20120504','A'). テーブルデータ(303,'20120422','20120423','A'). テーブルデータ(304,'20120422','20120616','A'). テーブルデータ(305,'20120422','20120620','A'). テーブルデータ(306,'20120422','20120511','A'). テーブルデータ(307,'20120422','20120513','A'). テーブルデータ(308,'20120422','20120605','A'). テーブルデータ(309,'20120422','20120511','A'). テーブルデータ(310,'20120422','20120523','A'). テーブルデータ(311,'20120422','20120512','A'). テーブルデータ(312,'20120422','20120608','A'). テーブルデータ(313,'20120422','20120427','A'). テーブルデータ(314,'20120422','20120609','A'). テーブルデータ(315,'20120422','20120608','A'). テーブルデータ(316,'20120422','20120611','A'). テーブルデータ(317,'20120422','20120516','A'). テーブルデータ(318,'20120423','20120423','A'). テーブルデータ(319,'20120423','20120427','A'). テーブルデータ(320,'20120423','20120515','A'). テーブルデータ(321,'20120423','20120522','A'). テーブルデータ(322,'20120423','20120618','A'). テーブルデータ(323,'20120423','20120424','A'). テーブルデータ(324,'20120423','20120523','A'). テーブルデータ(325,'20120423','20120606','A'). テーブルデータ(326,'20120423','20120614','A'). テーブルデータ(327,'20120423','20120505','A'). テーブルデータ(328,'20120423','20120525','A'). テーブルデータ(329,'20120423','20120612','A'). テーブルデータ(330,'20120423','20120518','A'). テーブルデータ(331,'20120423','20120607','A'). テーブルデータ(332,'20120423','20120425','A'). テーブルデータ(333,'20120423','20120512','A'). テーブルデータ(334,'20120423','20120602','A'). テーブルデータ(335,'20120423','20120425','A'). テーブルデータ(336,'20120423','20120531','A'). テーブルデータ(337,'20120423','20120615','A'). テーブルデータ(338,'20120423','20120531','A'). テーブルデータ(339,'20120423','20120612','A'). テーブルデータ(340,'20120423','20120517','A'). テーブルデータ(341,'20120423','20120612','A'). テーブルデータ(342,'20120423','20120522','A'). テーブルデータ(343,'20120423','20120514','A'). テーブルデータ(344,'20120423','20120601','A'). テーブルデータ(345,'20120423','20120509','A'). テーブルデータ(346,'20120423','20120505','A'). テーブルデータ(347,'20120424','20120508','A'). テーブルデータ(348,'20120424','20120428','A'). テーブルデータ(349,'20120424','20120622','A'). テーブルデータ(350,'20120424','20120523','A'). テーブルデータ(351,'20120424','20120527','A'). テーブルデータ(352,'20120424','20120619','A'). テーブルデータ(353,'20120424','20120524','A'). テーブルデータ(354,'20120424','20120618','A'). テーブルデータ(355,'20120424','20120603','A'). テーブルデータ(356,'20120424','20120516','A'). テーブルデータ(357,'20120424','20120622','A'). テーブルデータ(358,'20120424','20120428','A'). テーブルデータ(359,'20120424','20120507','A'). テーブルデータ(360,'20120424','20120519','A'). テーブルデータ(361,'20120424','20120604','A'). テーブルデータ(362,'20120424','20120501','A'). テーブルデータ(363,'20120424','20120607','A'). テーブルデータ(364,'20120424','20120507','A'). テーブルデータ(365,'20120424','20120425','A'). テーブルデータ(366,'20120424','20120508','A'). テーブルデータ(367,'20120424','20120430','A'). テーブルデータ(368,'20120424','20120602','A'). テーブルデータ(369,'20120424','20120428','A'). テーブルデータ(370,'20120424','20120516','A'). テーブルデータ(371,'20120424','20120516','A'). テーブルデータ(372,'20120424','20120520','A'). テーブルデータ(373,'20120425','20120426','A'). テーブルデータ(374,'20120425','20120606','A'). テーブルデータ(375,'20120425','20120612','A'). テーブルデータ(376,'20120425','20120612','A'). テーブルデータ(377,'20120425','20120613','A'). テーブルデータ(378,'20120425','20120616','A'). テーブルデータ(379,'20120425','20120612','A'). テーブルデータ(380,'20120425','20120513','A'). テーブルデータ(381,'20120425','20120513','A'). テーブルデータ(382,'20120425','20120531','A'). テーブルデータ(383,'20120425','20120612','A'). テーブルデータ(384,'20120425','20120508','A'). テーブルデータ(385,'20120425','20120503','A'). テーブルデータ(386,'20120425','20120428','A'). テーブルデータ(387,'20120425','20120508','A'). テーブルデータ(388,'20120426','20120504','A'). テーブルデータ(389,'20120426','20120526','A'). テーブルデータ(390,'20120426','20120619','A'). テーブルデータ(391,'20120426','20120503','A'). テーブルデータ(392,'20120426','20120502','A'). テーブルデータ(393,'20120426','20120504','A'). テーブルデータ(394,'20120426','20120505','A'). テーブルデータ(395,'20120426','20120516','A'). テーブルデータ(396,'20120426','20120502','A'). テーブルデータ(397,'20120426','20120613','A'). テーブルデータ(398,'20120426','20120513','A'). テーブルデータ(399,'20120426','20120525','A'). テーブルデータ(400,'20120426','20120506','A'). テーブルデータ(401,'20120426','20120608','A'). テーブルデータ(402,'20120427','20120430','A'). テーブルデータ(403,'20120427','20120514','A'). テーブルデータ(404,'20120427','20120619','A'). テーブルデータ(405,'20120427','20120618','A'). テーブルデータ(406,'20120427','20120503','A'). テーブルデータ(407,'20120427','20120611','A'). テーブルデータ(408,'20120427','20120529','A'). テーブルデータ(409,'20120427','20120513','A'). テーブルデータ(410,'20120427','20120621','A'). テーブルデータ(411,'20120427','20120505','A'). テーブルデータ(412,'20120427','20120623','A'). テーブルデータ(413,'20120427','20120506','A'). テーブルデータ(414,'20120427','20120513','A'). テーブルデータ(415,'20120427','20120427','A'). テーブルデータ(416,'20120428','20120519','A'). テーブルデータ(417,'20120428','20120428','A'). テーブルデータ(418,'20120428','20120611','A'). テーブルデータ(419,'20120428','20120506','A'). テーブルデータ(420,'20120428','20120505','A'). テーブルデータ(421,'20120428','20120617','A'). テーブルデータ(422,'20120428','20120506','A'). テーブルデータ(423,'20120428','20120514','A'). テーブルデータ(424,'20120428','20120430','A'). テーブルデータ(425,'20120428','20120512','A'). テーブルデータ(426,'20120428','20120624','A'). テーブルデータ(427,'20120428','20120517','A'). テーブルデータ(428,'20120428','20120610','A'). テーブルデータ(429,'20120428','20120626','A'). テーブルデータ(430,'20120428','20120430','A'). テーブルデータ(431,'20120429','20120502','A'). テーブルデータ(432,'20120429','20120519','A'). テーブルデータ(433,'20120429','20120609','A'). テーブルデータ(434,'20120429','20120615','A'). テーブルデータ(435,'20120429','20120517','A'). テーブルデータ(436,'20120429','20120518','A'). テーブルデータ(437,'20120429','20120510','A'). テーブルデータ(438,'20120429','20120603','A'). テーブルデータ(439,'20120429','20120513','A'). テーブルデータ(440,'20120429','20120518','A'). テーブルデータ(441,'20120429','20120531','A'). テーブルデータ(442,'20120429','20120514','A'). テーブルデータ(443,'20120429','20120526','A'). テーブルデータ(444,'20120429','20120523','A'). テーブルデータ(445,'20120429','20120528','A'). テーブルデータ(446,'20120429','20120617','A'). テーブルデータ(447,'20120429','20120523','A'). テーブルデータ(448,'20120429','20120504','A'). テーブルデータ(449,'20120429','20120617','A'). テーブルデータ(450,'20120430','20120624','A'). テーブルデータ(451,'20120430','20120626','A'). テーブルデータ(452,'20120430','20120609','A'). テーブルデータ(453,'20120430','20120627','A'). テーブルデータ(454,'20120430','20120511','A'). テーブルデータ(455,'20120430','20120529','A'). テーブルデータ(456,'20120430','20120509','A'). テーブルデータ(457,'20120430','20120616','A'). テーブルデータ(458,'20120430','20120528','A'). テーブルデータ(459,'20120430','20120512','A'). テーブルデータ(460,'20120430','20120604','A'). テーブルデータ(461,'20120430','20120523','A'). テーブルデータ(462,'20120430','20120524','A'). テーブルデータ(463,'20120430','20120509','A'). テーブルデータ(464,'20120430','20120510','A'). テーブルデータ(465,'20120430','20120611','A'). テーブルデータ(466,'20120430','20120520','A'). テーブルデータ(467,'20120430','20120521','A'). テーブルデータ(468,'20120430','20120509','A'). テーブルデータ(469,'20120430','20120526','A'). テーブルデータ(470,'20120430','20120601','A'). テーブルデータ(471,'20120430','20120610','A'). テーブルデータ(472,'20120430','20120611','A'). テーブルデータ(473,'20120430','20120430','A'). テーブルデータ(474,'20120501','20120504','A'). テーブルデータ(475,'20120501','20120611','A'). テーブルデータ(476,'20120501','20120522','A'). テーブルデータ(477,'20120501','20120510','A'). テーブルデータ(478,'20120501','20120531','A'). テーブルデータ(479,'20120501','20120615','A'). テーブルデータ(480,'20120501','20120626','A'). テーブルデータ(481,'20120501','20120528','A'). テーブルデータ(482,'20120501','20120518','A'). テーブルデータ(483,'20120501','20120624','A'). テーブルデータ(484,'20120501','20120531','A'). テーブルデータ(485,'20120501','20120616','A'). テーブルデータ(486,'20120501','20120505','A'). テーブルデータ(487,'20120501','20120518','A'). テーブルデータ(488,'20120501','20120515','A'). テーブルデータ(489,'20120501','20120509','A'). テーブルデータ(490,'20120501','20120615','A'). テーブルデータ(491,'20120501','20120608','A'). テーブルデータ(492,'20120501','20120602','A'). テーブルデータ(493,'20120501','20120616','A'). テーブルデータ(494,'20120501','20120610','A'). テーブルデータ(495,'20120501','20120507','A'). テーブルデータ(496,'20120501','20120507','A'). テーブルデータ(497,'20120501','20120624','A'). テーブルデータ(498,'20120501','20120517','A'). テーブルデータ(499,'20120501','20120602','A'). テーブルデータ(500,'20120501','20120519','A'). テーブルデータ(501,'20120501','20120619','A'). テーブルデータ(502,'20120502','20120512','A'). テーブルデータ(503,'20120502','20120618','A'). テーブルデータ(504,'20120502','20120512','A'). テーブルデータ(505,'20120502','20120622','A'). テーブルデータ(506,'20120502','20120502','A'). テーブルデータ(507,'20120502','20120513','A'). テーブルデータ(508,'20120502','20120515','A'). テーブルデータ(509,'20120503','20120510','A'). テーブルデータ(510,'20120503','20120604','A'). テーブルデータ(511,'20120503','20120618','A'). テーブルデータ(512,'20120503','20120626','A'). テーブルデータ(513,'20120503','20120627','A'). テーブルデータ(514,'20120503','20120604','A'). テーブルデータ(515,'20120503','20120622','A'). テーブルデータ(516,'20120503','20120515','A'). テーブルデータ(517,'20120504','20120623','A'). テーブルデータ(518,'20120504','20120622','A'). テーブルデータ(519,'20120504','20120513','A'). テーブルデータ(520,'20120504','20120518','A'). テーブルデータ(521,'20120504','20120608','A'). テーブルデータ(522,'20120504','20120614','A'). テーブルデータ(523,'20120504','20120524','A'). テーブルデータ(524,'20120504','20120606','A'). テーブルデータ(525,'20120504','20120531','A'). テーブルデータ(526,'20120504','20120601','A'). テーブルデータ(527,'20120505','20120620','A'). テーブルデータ(528,'20120505','20120515','A'). テーブルデータ(529,'20120505','20120509','A'). テーブルデータ(530,'20120505','20120630','A'). テーブルデータ(531,'20120505','20120701','A'). テーブルデータ(532,'20120505','20120511','A'). テーブルデータ(533,'20120505','20120614','A'). テーブルデータ(534,'20120505','20120623','A'). テーブルデータ(535,'20120505','20120522','A'). テーブルデータ(536,'20120505','20120619','A'). テーブルデータ(537,'20120505','20120524','A'). テーブルデータ(538,'20120505','20120522','A'). テーブルデータ(539,'20120505','20120523','A'). テーブルデータ(540,'20120505','20120510','A'). テーブルデータ(541,'20120505','20120508','A'). テーブルデータ(542,'20120505','20120518','A'). テーブルデータ(543,'20120505','20120612','A'). テーブルデータ(544,'20120505','20120627','A'). テーブルデータ(545,'20120505','20120522','A'). テーブルデータ(546,'20120505','20120514','A'). テーブルデータ(547,'20120505','20120617','A'). テーブルデータ(548,'20120505','20120512','A'). テーブルデータ(549,'20120505','20120523','A'). テーブルデータ(550,'20120505','20120701','A'). テーブルデータ(551,'20120505','20120608','A'). テーブルデータ(552,'20120505','20120625','A'). テーブルデータ(553,'20120505','20120514','A'). テーブルデータ(554,'20120505','20120505','A'). テーブルデータ(555,'20120505','20120524','A'). テーブルデータ(556,'20120506','20120703','A'). テーブルデータ(557,'20120506','20120511','A'). テーブルデータ(558,'20120506','20120623','A'). テーブルデータ(559,'20120506','20120629','A'). テーブルデータ(560,'20120506','20120628','A'). テーブルデータ(561,'20120506','20120612','A'). テーブルデータ(562,'20120506','20120507','A'). テーブルデータ(563,'20120506','20120608','A'). テーブルデータ(564,'20120506','20120524','A'). テーブルデータ(565,'20120507','20120526','A'). テーブルデータ(566,'20120507','20120613','A'). テーブルデータ(567,'20120507','20120526','A'). テーブルデータ(568,'20120507','20120605','A'). テーブルデータ(569,'20120507','20120619','A'). テーブルデータ(570,'20120507','20120529','A'). テーブルデータ(571,'20120507','20120610','A'). テーブルデータ(572,'20120507','20120520','A'). テーブルデータ(573,'20120507','20120514','A'). テーブルデータ(574,'20120507','20120627','A'). テーブルデータ(575,'20120507','20120529','A'). テーブルデータ(576,'20120508','20120627','A'). テーブルデータ(577,'20120508','20120609','A'). テーブルデータ(578,'20120508','20120608','A'). テーブルデータ(579,'20120508','20120525','A'). テーブルデータ(580,'20120508','20120523','A'). テーブルデータ(581,'20120508','20120618','A'). テーブルデータ(582,'20120508','20120525','A'). テーブルデータ(583,'20120508','20120611','A'). テーブルデータ(584,'20120508','20120519','A'). テーブルデータ(585,'20120508','20120515','A'). テーブルデータ(586,'20120508','20120608','A'). テーブルデータ(587,'20120508','20120628','A'). テーブルデータ(588,'20120508','20120509','A'). テーブルデータ(589,'20120509','20120529','A'). テーブルデータ(590,'20120509','20120702','A'). テーブルデータ(591,'20120509','20120628','A'). テーブルデータ(592,'20120509','20120616','A'). テーブルデータ(593,'20120509','20120514','A'). テーブルデータ(594,'20120509','20120510','A'). テーブルデータ(595,'20120509','20120525','A'). テーブルデータ(596,'20120509','20120525','A'). テーブルデータ(597,'20120509','20120531','A'). テーブルデータ(598,'20120509','20120629','A'). テーブルデータ(599,'20120509','20120617','A'). テーブルデータ(600,'20120509','20120704','A'). テーブルデータ(601,'20120509','20120513','A'). テーブルデータ(602,'20120509','20120616','A'). テーブルデータ(603,'20120509','20120618','A'). テーブルデータ(604,'20120509','20120527','A'). テーブルデータ(605,'20120509','20120530','A'). テーブルデータ(606,'20120509','20120608','A'). テーブルデータ(607,'20120510','20120701','A'). テーブルデータ(608,'20120510','20120618','A'). テーブルデータ(609,'20120510','20120706','A'). テーブルデータ(610,'20120510','20120604','A'). テーブルデータ(611,'20120510','20120705','A'). テーブルデータ(612,'20120510','20120603','A'). テーブルデータ(613,'20120510','20120615','A'). テーブルデータ(614,'20120510','20120513','A'). テーブルデータ(615,'20120510','20120626','A'). テーブルデータ(616,'20120510','20120529','A'). テーブルデータ(617,'20120510','20120706','A'). テーブルデータ(618,'20120510','20120514','A'). テーブルデータ(619,'20120510','20120618','A'). テーブルデータ(620,'20120511','20120627','A'). テーブルデータ(621,'20120511','20120521','A'). テーブルデータ(622,'20120511','20120706','A'). テーブルデータ(623,'20120511','20120620','A'). テーブルデータ(624,'20120511','20120529','A'). テーブルデータ(625,'20120511','20120516','A'). テーブルデータ(626,'20120511','20120514','A'). テーブルデータ(627,'20120511','20120520','A'). テーブルデータ(628,'20120511','20120624','A'). テーブルデータ(629,'20120511','20120701','A'). テーブルデータ(630,'20120511','20120516','A'). テーブルデータ(631,'20120511','20120525','A'). テーブルデータ(632,'20120511','20120611','A'). テーブルデータ(633,'20120511','20120526','A'). テーブルデータ(634,'20120511','20120615','A'). テーブルデータ(635,'20120511','20120704','A'). テーブルデータ(636,'20120511','20120629','A'). テーブルデータ(637,'20120511','20120608','A'). テーブルデータ(638,'20120511','20120613','A'). テーブルデータ(639,'20120511','20120618','A'). テーブルデータ(640,'20120511','20120625','A'). テーブルデータ(641,'20120511','20120602','A'). テーブルデータ(642,'20120512','20120603','A'). テーブルデータ(643,'20120512','20120529','A'). テーブルデータ(644,'20120512','20120701','A'). テーブルデータ(645,'20120513','20120527','A'). テーブルデータ(646,'20120513','20120628','A'). テーブルデータ(647,'20120513','20120526','A'). テーブルデータ(648,'20120513','20120519','A'). テーブルデータ(649,'20120514','20120606','A'). テーブルデータ(650,'20120514','20120707','A'). テーブルデータ(651,'20120514','20120528','A'). テーブルデータ(652,'20120514','20120616','A'). テーブルデータ(653,'20120515','20120601','A'). テーブルデータ(654,'20120515','20120626','A'). テーブルデータ(655,'20120515','20120619','A'). テーブルデータ(656,'20120515','20120523','A'). テーブルデータ(657,'20120515','20120623','A'). テーブルデータ(658,'20120515','20120704','A'). テーブルデータ(659,'20120515','20120616','A'). テーブルデータ(660,'20120515','20120708','A'). テーブルデータ(661,'20120515','20120601','A'). テーブルデータ(662,'20120515','20120610','A'). テーブルデータ(663,'20120515','20120619','A'). テーブルデータ(664,'20120515','20120621','A'). テーブルデータ(665,'20120515','20120705','A'). テーブルデータ(666,'20120515','20120528','A'). テーブルデータ(667,'20120515','20120607','A'). テーブルデータ(668,'20120515','20120528','A'). テーブルデータ(669,'20120515','20120523','A'). テーブルデータ(670,'20120515','20120629','A'). テーブルデータ(671,'20120515','20120615','A'). テーブルデータ(672,'20120515','20120704','A'). テーブルデータ(673,'20120515','20120602','A'). テーブルデータ(674,'20120515','20120621','A'). テーブルデータ(675,'20120515','20120620','A'). テーブルデータ(676,'20120515','20120607','A'). テーブルデータ(677,'20120515','20120619','A'). テーブルデータ(678,'20120515','20120525','A'). テーブルデータ(679,'20120515','20120622','A'). テーブルデータ(680,'20120515','20120614','A'). テーブルデータ(681,'20120515','20120608','A'). テーブルデータ(682,'20120515','20120526','A'). テーブルデータ(683,'20120516','20120618','A'). テーブルデータ(684,'20120516','20120630','A'). テーブルデータ(685,'20120516','20120704','A'). テーブルデータ(686,'20120516','20120618','A'). テーブルデータ(687,'20120516','20120609','A'). テーブルデータ(688,'20120516','20120616','A'). テーブルデータ(689,'20120516','20120521','A'). テーブルデータ(690,'20120516','20120526','A'). テーブルデータ(691,'20120516','20120703','A'). テーブルデータ(692,'20120516','20120608','A'). テーブルデータ(693,'20120516','20120630','A'). テーブルデータ(694,'20120516','20120611','A'). テーブルデータ(695,'20120516','20120531','A'). テーブルデータ(696,'20120516','20120714','A'). テーブルデータ(697,'20120516','20120704','A'). テーブルデータ(698,'20120516','20120605','A'). テーブルデータ(699,'20120516','20120523','A'). テーブルデータ(700,'20120516','20120611','A'). テーブルデータ(701,'20120516','20120628','A'). テーブルデータ(702,'20120516','20120712','A'). テーブルデータ(703,'20120516','20120621','A'). テーブルデータ(704,'20120516','20120606','A'). テーブルデータ(705,'20120517','20120517','A'). テーブルデータ(706,'20120517','20120712','A'). テーブルデータ(707,'20120517','20120621','A'). テーブルデータ(708,'20120517','20120616','A'). テーブルデータ(709,'20120517','20120604','A'). テーブルデータ(710,'20120517','20120707','A'). テーブルデータ(711,'20120517','20120628','A'). テーブルデータ(712,'20120517','20120618','A'). テーブルデータ(713,'20120517','20120602','A'). テーブルデータ(714,'20120517','20120605','A'). テーブルデータ(715,'20120517','20120607','A'). テーブルデータ(716,'20120517','20120706','A'). テーブルデータ(717,'20120517','20120630','A'). テーブルデータ(718,'20120517','20120708','A'). テーブルデータ(719,'20120517','20120703','A'). テーブルデータ(720,'20120517','20120710','A'). テーブルデータ(721,'20120517','20120626','A'). テーブルデータ(722,'20120517','20120520','A'). テーブルデータ(723,'20120517','20120618','A'). テーブルデータ(724,'20120517','20120714','A'). テーブルデータ(725,'20120517','20120527','A'). テーブルデータ(726,'20120517','20120609','A'). テーブルデータ(727,'20120517','20120703','A'). テーブルデータ(728,'20120517','20120616','A'). テーブルデータ(729,'20120517','20120616','A'). テーブルデータ(730,'20120517','20120530','A'). テーブルデータ(731,'20120518','20120606','A'). テーブルデータ(732,'20120518','20120629','A'). テーブルデータ(733,'20120518','20120614','A'). テーブルデータ(734,'20120518','20120701','A'). テーブルデータ(735,'20120518','20120629','A'). テーブルデータ(736,'20120518','20120602','A'). テーブルデータ(737,'20120518','20120530','A'). テーブルデータ(738,'20120518','20120522','A'). テーブルデータ(739,'20120518','20120621','A'). テーブルデータ(740,'20120518','20120521','A'). テーブルデータ(741,'20120518','20120625','A'). テーブルデータ(742,'20120518','20120524','A'). テーブルデータ(743,'20120518','20120607','A'). テーブルデータ(744,'20120518','20120715','A'). テーブルデータ(745,'20120518','20120606','A'). テーブルデータ(746,'20120519','20120630','A'). テーブルデータ(747,'20120519','20120522','A'). テーブルデータ(748,'20120519','20120629','A'). テーブルデータ(749,'20120520','20120702','A'). テーブルデータ(750,'20120520','20120703','A'). テーブルデータ(751,'20120520','20120711','A'). テーブルデータ(752,'20120520','20120701','A'). テーブルデータ(753,'20120520','20120713','A'). テーブルデータ(754,'20120520','20120604','A'). テーブルデータ(755,'20120520','20120610','A'). テーブルデータ(756,'20120520','20120606','A'). テーブルデータ(757,'20120520','20120704','A'). テーブルデータ(758,'20120520','20120616','A'). テーブルデータ(759,'20120520','20120620','A'). テーブルデータ(760,'20120520','20120715','A'). テーブルデータ(761,'20120520','20120529','A'). テーブルデータ(762,'20120520','20120717','A'). テーブルデータ(763,'20120520','20120630','A'). テーブルデータ(764,'20120520','20120702','A'). テーブルデータ(765,'20120520','20120602','A'). テーブルデータ(766,'20120520','20120712','A'). テーブルデータ(767,'20120520','20120706','A'). テーブルデータ(768,'20120520','20120628','A'). テーブルデータ(769,'20120520','20120707','A'). テーブルデータ(770,'20120520','20120615','A'). テーブルデータ(771,'20120520','20120626','A'). テーブルデータ(772,'20120520','20120520','A'). テーブルデータ(773,'20120520','20120613','A'). テーブルデータ(774,'20120520','20120707','A'). テーブルデータ(775,'20120520','20120713','A'). テーブルデータ(776,'20120520','20120717','A'). テーブルデータ(777,'20120520','20120710','A'). テーブルデータ(778,'20120521','20120608','A'). テーブルデータ(779,'20120521','20120625','A'). テーブルデータ(780,'20120521','20120602','A'). テーブルデータ(781,'20120521','20120601','A'). テーブルデータ(782,'20120521','20120530','A'). テーブルデータ(783,'20120521','20120719','A'). テーブルデータ(784,'20120521','20120616','A'). テーブルデータ(785,'20120522','20120607','A'). テーブルデータ(786,'20120523','20120711','A'). テーブルデータ(787,'20120523','20120701','A'). テーブルデータ(788,'20120523','20120523','A'). テーブルデータ(789,'20120523','20120720','A'). テーブルデータ(790,'20120523','20120621','A'). テーブルデータ(791,'20120524','20120704','A'). テーブルデータ(792,'20120524','20120627','A'). テーブルデータ(793,'20120524','20120611','A'). テーブルデータ(794,'20120524','20120622','A'). テーブルデータ(795,'20120525','20120601','A'). テーブルデータ(796,'20120525','20120711','A'). テーブルデータ(797,'20120525','20120707','A'). テーブルデータ(798,'20120525','20120601','A'). テーブルデータ(799,'20120525','20120605','A'). テーブルデータ(800,'20120525','20120626','A'). テーブルデータ(801,'20120525','20120527','A'). テーブルデータ(802,'20120526','20120610','A'). テーブルデータ(803,'20120526','20120625','A'). テーブルデータ(804,'20120527','20120716','A'). テーブルデータ(805,'20120527','20120630','A'). テーブルデータ(806,'20120527','20120626','A'). テーブルデータ(807,'20120527','20120717','A'). テーブルデータ(808,'20120527','20120629','A'). テーブルデータ(809,'20120527','20120723','A'). テーブルデータ(810,'20120527','20120610','A'). テーブルデータ(811,'20120527','20120707','A'). テーブルデータ(812,'20120527','20120528','A'). テーブルデータ(813,'20120527','20120530','A'). テーブルデータ(814,'20120527','20120616','A'). テーブルデータ(815,'20120527','20120719','A'). テーブルデータ(816,'20120527','20120529','A'). テーブルデータ(817,'20120527','20120707','A'). テーブルデータ(818,'20120527','20120623','A'). テーブルデータ(819,'20120527','20120701','A'). テーブルデータ(820,'20120527','20120612','A'). テーブルデータ(821,'20120527','20120711','A'). テーブルデータ(822,'20120527','20120531','A'). テーブルデータ(823,'20120527','20120618','A'). テーブルデータ(824,'20120528','20120718','A'). テーブルデータ(825,'20120528','20120724','A'). テーブルデータ(826,'20120528','20120719','A'). テーブルデータ(827,'20120528','20120721','A'). テーブルデータ(828,'20120528','20120618','A'). テーブルデータ(829,'20120528','20120713','A'). テーブルデータ(830,'20120528','20120722','A'). テーブルデータ(831,'20120528','20120704','A'). テーブルデータ(832,'20120528','20120605','A'). テーブルデータ(833,'20120528','20120612','A'). テーブルデータ(834,'20120528','20120616','A'). テーブルデータ(835,'20120528','20120709','A'). テーブルデータ(836,'20120528','20120704','A'). テーブルデータ(837,'20120528','20120531','A'). テーブルデータ(838,'20120528','20120613','A'). テーブルデータ(839,'20120528','20120701','A'). テーブルデータ(840,'20120528','20120614','A'). テーブルデータ(841,'20120528','20120716','A'). テーブルデータ(842,'20120528','20120624','A'). テーブルデータ(843,'20120528','20120609','A'). テーブルデータ(844,'20120528','20120530','A'). テーブルデータ(845,'20120528','20120618','A'). テーブルデータ(846,'20120528','20120603','A'). テーブルデータ(847,'20120529','20120708','A'). テーブルデータ(848,'20120529','20120710','A'). テーブルデータ(849,'20120529','20120719','A'). テーブルデータ(850,'20120529','20120623','A'). テーブルデータ(851,'20120529','20120714','A'). テーブルデータ(852,'20120529','20120603','A'). テーブルデータ(853,'20120529','20120608','A'). テーブルデータ(854,'20120529','20120628','A'). テーブルデータ(855,'20120529','20120601','A'). テーブルデータ(856,'20120529','20120722','A'). テーブルデータ(857,'20120529','20120614','A'). テーブルデータ(858,'20120529','20120614','A'). テーブルデータ(859,'20120529','20120708','A'). テーブルデータ(860,'20120529','20120610','A'). テーブルデータ(861,'20120530','20120717','A'). テーブルデータ(862,'20120530','20120618','A'). テーブルデータ(863,'20120530','20120604','A'). テーブルデータ(864,'20120530','20120629','A'). テーブルデータ(865,'20120530','20120725','A'). テーブルデータ(866,'20120530','20120530','A'). テーブルデータ(867,'20120530','20120707','A'). テーブルデータ(868,'20120530','20120622','A'). テーブルデータ(869,'20120530','20120616','A'). テーブルデータ(870,'20120530','20120627','A'). テーブルデータ(871,'20120530','20120711','A'). テーブルデータ(872,'20120530','20120620','A'). テーブルデータ(873,'20120530','20120629','A'). テーブルデータ(874,'20120530','20120724','A'). テーブルデータ(875,'20120530','20120627','A'). テーブルデータ(876,'20120530','20120604','A'). テーブルデータ(877,'20120531','20120610','A'). テーブルデータ(878,'20120531','20120727','A'). テーブルデータ(879,'20120531','20120723','A'). テーブルデータ(880,'20120531','20120718','A'). テーブルデータ(881,'20120531','20120602','A'). テーブルデータ(882,'20120531','20120603','A'). テーブルデータ(883,'20120601','20120728','A'). テーブルデータ(884,'20120601','20120728','A'). テーブルデータ(885,'20120601','20120628','A'). テーブルデータ(886,'20120601','20120607','A'). テーブルデータ(887,'20120601','20120630','A'). テーブルデータ(888,'20120601','20120702','A'). テーブルデータ(889,'20120601','20120722','A'). テーブルデータ(890,'20120601','20120610','A'). テーブルデータ(891,'20120601','20120721','A'). テーブルデータ(892,'20120601','20120719','A'). テーブルデータ(893,'20120601','20120710','A'). テーブルデータ(894,'20120602','20120720','A'). テーブルデータ(895,'20120602','20120612','A'). テーブルデータ(896,'20120602','20120725','A'). テーブルデータ(897,'20120602','20120729','A'). テーブルデータ(898,'20120602','20120702','A'). テーブルデータ(899,'20120602','20120708','A'). テーブルデータ(900,'20120602','20120621','A'). テーブルデータ(901,'20120602','20120724','A'). テーブルデータ(902,'20120602','20120703','A'). テーブルデータ(903,'20120603','20120730','A'). テーブルデータ(904,'20120603','20120801','A'). テーブルデータ(905,'20120603','20120730','A'). テーブルデータ(906,'20120603','20120719','A'). テーブルデータ(907,'20120603','20120725','A'). テーブルデータ(908,'20120603','20120710','A'). テーブルデータ(909,'20120603','20120714','A'). テーブルデータ(910,'20120603','20120728','A'). テーブルデータ(911,'20120603','20120721','A'). テーブルデータ(912,'20120603','20120711','A'). テーブルデータ(913,'20120603','20120717','A'). テーブルデータ(914,'20120603','20120618','A'). テーブルデータ(915,'20120603','20120709','A'). テーブルデータ(916,'20120603','20120608','A'). テーブルデータ(917,'20120603','20120719','A'). テーブルデータ(918,'20120603','20120701','A'). テーブルデータ(919,'20120603','20120617','A'). テーブルデータ(920,'20120603','20120701','A'). テーブルデータ(921,'20120604','20120727','A'). テーブルデータ(922,'20120604','20120801','A'). テーブルデータ(923,'20120604','20120731','A'). テーブルデータ(924,'20120604','20120729','A'). テーブルデータ(925,'20120604','20120726','A'). テーブルデータ(926,'20120604','20120728','A'). テーブルデータ(927,'20120604','20120629','A'). テーブルデータ(928,'20120604','20120624','A'). テーブルデータ(929,'20120604','20120609','A'). テーブルデータ(930,'20120605','20120718','A'). テーブルデータ(931,'20120605','20120727','A'). テーブルデータ(932,'20120605','20120612','A'). テーブルデータ(933,'20120605','20120717','A'). テーブルデータ(934,'20120605','20120716','A'). テーブルデータ(935,'20120605','20120728','A'). テーブルデータ(936,'20120605','20120709','A'). テーブルデータ(937,'20120605','20120624','A'). テーブルデータ(938,'20120605','20120709','A'). テーブルデータ(939,'20120605','20120626','A'). テーブルデータ(940,'20120605','20120803','A'). テーブルデータ(941,'20120605','20120610','A'). テーブルデータ(942,'20120605','20120801','A'). テーブルデータ(943,'20120605','20120619','A'). テーブルデータ(944,'20120605','20120716','A'). テーブルデータ(945,'20120605','20120607','A'). テーブルデータ(946,'20120605','20120727','A'). テーブルデータ(947,'20120605','20120606','A'). テーブルデータ(948,'20120606','20120618','A'). テーブルデータ(949,'20120606','20120616','A'). テーブルデータ(950,'20120606','20120608','A'). テーブルデータ(951,'20120606','20120608','A'). テーブルデータ(952,'20120606','20120804','A'). テーブルデータ(953,'20120606','20120802','A'). テーブルデータ(954,'20120606','20120730','A'). テーブルデータ(955,'20120606','20120729','A'). テーブルデータ(956,'20120606','20120621','A'). テーブルデータ(957,'20120606','20120612','A'). テーブルデータ(958,'20120606','20120727','A'). テーブルデータ(959,'20120606','20120630','A'). テーブルデータ(960,'20120606','20120726','A'). テーブルデータ(961,'20120606','20120719','A'). テーブルデータ(962,'20120606','20120707','A'). テーブルデータ(963,'20120606','20120708','A'). テーブルデータ(964,'20120606','20120623','A'). テーブルデータ(965,'20120607','20120805','A'). テーブルデータ(966,'20120607','20120705','A'). テーブルデータ(967,'20120607','20120728','A'). テーブルデータ(968,'20120607','20120627','A'). テーブルデータ(969,'20120607','20120704','A'). テーブルデータ(970,'20120607','20120802','A'). テーブルデータ(971,'20120607','20120617','A'). テーブルデータ(972,'20120607','20120718','A'). テーブルデータ(973,'20120607','20120707','A'). テーブルデータ(974,'20120607','20120619','A'). テーブルデータ(975,'20120607','20120702','A'). テーブルデータ(976,'20120607','20120708','A'). テーブルデータ(977,'20120607','20120706','A'). テーブルデータ(978,'20120607','20120714','A'). テーブルデータ(979,'20120607','20120718','A'). テーブルデータ(980,'20120607','20120630','A'). テーブルデータ(981,'20120607','20120708','A'). テーブルデータ(982,'20120607','20120709','A'). テーブルデータ(983,'20120608','20120704','A'). テーブルデータ(984,'20120608','20120626','A'). テーブルデータ(985,'20120608','20120705','A'). テーブルデータ(986,'20120608','20120702','A'). テーブルデータ(987,'20120608','20120617','A'). テーブルデータ(988,'20120608','20120730','A'). テーブルデータ(989,'20120608','20120622','A'). テーブルデータ(990,'20120608','20120722','A'). テーブルデータ(991,'20120608','20120623','A'). テーブルデータ(992,'20120608','20120717','A'). テーブルデータ(993,'20120608','20120609','A'). テーブルデータ(994,'20120608','20120710','A'). テーブルデータ(995,'20120608','20120716','A'). テーブルデータ(996,'20120608','20120707','A'). テーブルデータ(997,'20120608','20120624','A'). テーブルデータ(998,'20120608','20120728','A'). テーブルデータ(999,'20120608','20120803','A'). テーブルデータ(1000,'20120608','20120612','A'). テーブルデータ(1001,'20120608','20120608','A'). テーブルデータ(1002,'20120608','20120707','A'). テーブルデータ(1003,'20120608','20120712','A'). テーブルデータ(1004,'20120609','20120802','A'). テーブルデータ(1005,'20120609','20120615','A'). テーブルデータ(1006,'20120609','20120705','A'). テーブルデータ(1007,'20120609','20120702','A'). テーブルデータ(1008,'20120609','20120718','A'). テーブルデータ(1009,'20120609','20120728','A'). テーブルデータ(1010,'20120610','20120622','A'). テーブルデータ(1011,'20120610','20120611','A'). テーブルデータ(1012,'20120610','20120623','A'). テーブルデータ(1013,'20120610','20120710','A'). テーブルデータ(1014,'20120610','20120709','A'). テーブルデータ(1015,'20120610','20120709','A'). テーブルデータ(1016,'20120610','20120711','A'). テーブルデータ(1017,'20120610','20120623','A'). テーブルデータ(1018,'20120610','20120724','A'). テーブルデータ(1019,'20120610','20120625','A'). テーブルデータ(1020,'20120610','20120708','A'). テーブルデータ(1021,'20120610','20120625','A'). テーブルデータ(1022,'20120610','20120627','A'). テーブルデータ(1023,'20120610','20120802','A'). テーブルデータ(1024,'20120610','20120802','A'). テーブルデータ(1025,'20120610','20120718','A'). テーブルデータ(1026,'20120610','20120619','A'). テーブルデータ(1027,'20120610','20120715','A'). テーブルデータ(1028,'20120610','20120715','A'). テーブルデータ(1029,'20120610','20120623','A'). テーブルデータ(1030,'20120610','20120708','A'). テーブルデータ(1031,'20120610','20120805','A'). テーブルデータ(1032,'20120610','20120720','A'). テーブルデータ(1033,'20120610','20120713','A'). テーブルデータ(1034,'20120610','20120723','A'). テーブルデータ(1035,'20120610','20120726','A'). テーブルデータ(1036,'20120611','20120808','A'). テーブルデータ(1037,'20120611','20120628','A'). テーブルデータ(1038,'20120611','20120721','A'). テーブルデータ(1039,'20120611','20120726','A'). テーブルデータ(1040,'20120611','20120702','A'). テーブルデータ(1041,'20120611','20120722','A'). テーブルデータ(1042,'20120611','20120731','A'). テーブルデータ(1043,'20120611','20120724','A'). テーブルデータ(1044,'20120611','20120621','A'). テーブルデータ(1045,'20120611','20120701','A'). テーブルデータ(1046,'20120611','20120625','A'). テーブルデータ(1047,'20120611','20120626','A'). テーブルデータ(1048,'20120611','20120615','A'). テーブルデータ(1049,'20120611','20120703','A'). テーブルデータ(1050,'20120611','20120725','A'). テーブルデータ(1051,'20120611','20120630','A'). テーブルデータ(1052,'20120611','20120720','A'). テーブルデータ(1053,'20120611','20120710','A'). テーブルデータ(1054,'20120611','20120615','A'). テーブルデータ(1055,'20120611','20120620','A'). テーブルデータ(1056,'20120611','20120719','A'). テーブルデータ(1057,'20120611','20120712','A'). テーブルデータ(1058,'20120612','20120725','A'). テーブルデータ(1059,'20120612','20120810','A'). テーブルデータ(1060,'20120612','20120715','A'). テーブルデータ(1061,'20120612','20120705','A'). テーブルデータ(1062,'20120612','20120706','A'). テーブルデータ(1063,'20120612','20120628','A'). テーブルデータ(1064,'20120612','20120613','A'). テーブルデータ(1065,'20120613','20120619','A'). テーブルデータ(1066,'20120613','20120624','A'). テーブルデータ(1067,'20120613','20120730','A'). テーブルデータ(1068,'20120613','20120804','A'). テーブルデータ(1069,'20120613','20120715','A'). テーブルデータ(1070,'20120613','20120712','A'). テーブルデータ(1071,'20120613','20120725','A'). テーブルデータ(1072,'20120613','20120621','A'). テーブルデータ(1073,'20120613','20120714','A'). テーブルデータ(1074,'20120613','20120615','A'). テーブルデータ(1075,'20120613','20120627','A'). テーブルデータ(1076,'20120613','20120730','A'). テーブルデータ(1077,'20120613','20120810','A'). テーブルデータ(1078,'20120613','20120719','A'). テーブルデータ(1079,'20120613','20120706','A'). テーブルデータ(1080,'20120613','20120630','A'). テーブルデータ(1081,'20120614','20120805','A'). テーブルデータ(1082,'20120614','20120627','A'). テーブルデータ(1083,'20120614','20120701','A'). テーブルデータ(1084,'20120614','20120706','A'). テーブルデータ(1085,'20120614','20120729','A'). テーブルデータ(1086,'20120614','20120806','A'). テーブルデータ(1087,'20120614','20120810','A'). テーブルデータ(1088,'20120614','20120720','A'). テーブルデータ(1089,'20120615','20120706','A'). テーブルデータ(1090,'20120615','20120807','A'). テーブルデータ(1091,'20120615','20120711','A'). テーブルデータ(1092,'20120615','20120629','A'). テーブルデータ(1093,'20120615','20120615','A'). テーブルデータ(1094,'20120615','20120718','A'). テーブルデータ(1095,'20120615','20120710','A'). テーブルデータ(1096,'20120615','20120802','A'). テーブルデータ(1097,'20120615','20120710','A'). テーブルデータ(1098,'20120615','20120804','A'). テーブルデータ(1099,'20120615','20120624','A'). テーブルデータ(1100,'20120615','20120813','A'). テーブルデータ(1101,'20120615','20120812','A'). テーブルデータ(1102,'20120615','20120725','A'). テーブルデータ(1103,'20120615','20120617','A'). テーブルデータ(1104,'20120615','20120619','A'). テーブルデータ(1105,'20120615','20120704','A'). テーブルデータ(1106,'20120615','20120615','A'). テーブルデータ(1107,'20120615','20120726','A'). テーブルデータ(1108,'20120616','20120626','A'). テーブルデータ(1109,'20120616','20120726','A'). テーブルデータ(1110,'20120616','20120712','A'). テーブルデータ(1111,'20120616','20120709','A'). テーブルデータ(1112,'20120616','20120804','A'). テーブルデータ(1113,'20120616','20120726','A'). テーブルデータ(1114,'20120616','20120624','A'). テーブルデータ(1115,'20120616','20120729','A'). テーブルデータ(1116,'20120616','20120724','A'). テーブルデータ(1117,'20120616','20120723','A'). テーブルデータ(1118,'20120616','20120808','A'). テーブルデータ(1119,'20120616','20120806','A'). テーブルデータ(1120,'20120616','20120716','A'). テーブルデータ(1121,'20120617','20120622','A'). テーブルデータ(1122,'20120617','20120717','A'). テーブルデータ(1123,'20120617','20120809','A'). テーブルデータ(1124,'20120617','20120718','A'). テーブルデータ(1125,'20120617','20120705','A'). テーブルデータ(1126,'20120617','20120627','A'). テーブルデータ(1127,'20120617','20120708','A'). テーブルデータ(1128,'20120617','20120714','A'). テーブルデータ(1129,'20120617','20120626','A'). テーブルデータ(1130,'20120617','20120628','A'). テーブルデータ(1131,'20120617','20120617','A'). テーブルデータ(1132,'20120617','20120620','A'). テーブルデータ(1133,'20120617','20120702','A'). テーブルデータ(1134,'20120617','20120706','A'). テーブルデータ(1135,'20120617','20120621','A'). テーブルデータ(1136,'20120617','20120804','A'). テーブルデータ(1137,'20120617','20120810','A'). テーブルデータ(1138,'20120617','20120623','A'). テーブルデータ(1139,'20120617','20120716','A'). テーブルデータ(1140,'20120617','20120629','A'). テーブルデータ(1141,'20120617','20120716','A'). テーブルデータ(1142,'20120618','20120810','A'). テーブルデータ(1143,'20120618','20120718','A'). テーブルデータ(1144,'20120618','20120810','A'). テーブルデータ(1145,'20120618','20120711','A'). テーブルデータ(1146,'20120618','20120625','A'). テーブルデータ(1147,'20120618','20120727','A'). テーブルデータ(1148,'20120618','20120702','A'). テーブルデータ(1149,'20120618','20120717','A'). テーブルデータ(1150,'20120618','20120816','A'). テーブルデータ(1151,'20120618','20120629','A'). テーブルデータ(1152,'20120618','20120816','A'). テーブルデータ(1153,'20120619','20120731','A'). テーブルデータ(1154,'20120619','20120629','A'). テーブルデータ(1155,'20120619','20120804','A'). テーブルデータ(1156,'20120619','20120813','A'). テーブルデータ(1157,'20120619','20120718','A'). テーブルデータ(1158,'20120619','20120813','A'). テーブルデータ(1159,'20120619','20120625','A'). テーブルデータ(1160,'20120619','20120710','A'). テーブルデータ(1161,'20120619','20120809','A'). テーブルデータ(1162,'20120619','20120703','A'). テーブルデータ(1163,'20120619','20120722','A'). テーブルデータ(1164,'20120619','20120805','A'). テーブルデータ(1165,'20120619','20120621','A'). テーブルデータ(1166,'20120619','20120716','A'). テーブルデータ(1167,'20120619','20120811','A'). テーブルデータ(1168,'20120620','20120729','A'). テーブルデータ(1169,'20120620','20120712','A'). テーブルデータ(1170,'20120620','20120724','A'). テーブルデータ(1171,'20120620','20120714','A'). テーブルデータ(1172,'20120620','20120803','A'). テーブルデータ(1173,'20120620','20120709','A'). テーブルデータ(1174,'20120620','20120729','A'). テーブルデータ(1175,'20120620','20120802','A'). テーブルデータ(1176,'20120620','20120817','A'). テーブルデータ(1177,'20120620','20120812','A'). テーブルデータ(1178,'20120620','20120702','A'). テーブルデータ(1179,'20120620','20120808','A'). テーブルデータ(1180,'20120620','20120625','A'). テーブルデータ(1181,'20120620','20120624','A'). テーブルデータ(1182,'20120620','20120723','A'). テーブルデータ(1183,'20120620','20120729','A'). テーブルデータ(1184,'20120620','20120704','A'). テーブルデータ(1185,'20120620','20120709','A'). テーブルデータ(1186,'20120620','20120725','A'). テーブルデータ(1187,'20120620','20120725','A'). テーブルデータ(1188,'20120620','20120627','A'). テーブルデータ(1189,'20120620','20120723','A'). テーブルデータ(1190,'20120620','20120808','A'). テーブルデータ(1191,'20120620','20120809','A'). テーブルデータ(1192,'20120621','20120713','A'). テーブルデータ(1193,'20120621','20120728','A'). テーブルデータ(1194,'20120621','20120802','A'). テーブルデータ(1195,'20120621','20120809','A'). テーブルデータ(1196,'20120621','20120721','A'). テーブルデータ(1197,'20120621','20120626','A'). テーブルデータ(1198,'20120621','20120711','A'). テーブルデータ(1199,'20120621','20120804','A'). テーブルデータ(1200,'20120621','20120722','A'). テーブルデータ(1201,'20120621','20120728','A'). テーブルデータ(1202,'20120621','20120720','A'). テーブルデータ(1203,'20120621','20120803','A'). テーブルデータ(1204,'20120621','20120707','A'). テーブルデータ(1205,'20120621','20120703','A'). テーブルデータ(1206,'20120621','20120801','A'). テーブルデータ(1207,'20120621','20120623','A'). テーブルデータ(1208,'20120621','20120716','A'). テーブルデータ(1209,'20120621','20120714','A'). テーブルデータ(1210,'20120622','20120713','A'). テーブルデータ(1211,'20120622','20120809','A'). テーブルデータ(1212,'20120622','20120730','A'). テーブルデータ(1213,'20120622','20120719','A'). テーブルデータ(1214,'20120622','20120622','A'). テーブルデータ(1215,'20120622','20120627','A'). テーブルデータ(1216,'20120622','20120624','A'). テーブルデータ(1217,'20120622','20120629','A'). テーブルデータ(1218,'20120622','20120731','A'). テーブルデータ(1219,'20120622','20120812','A'). テーブルデータ(1220,'20120622','20120810','A'). テーブルデータ(1221,'20120622','20120718','A'). テーブルデータ(1222,'20120622','20120705','A'). テーブルデータ(1223,'20120622','20120718','A'). テーブルデータ(1224,'20120622','20120630','A'). テーブルデータ(1225,'20120622','20120815','A'). テーブルデータ(1226,'20120622','20120817','A'). テーブルデータ(1227,'20120622','20120628','A'). テーブルデータ(1228,'20120622','20120629','A'). テーブルデータ(1229,'20120622','20120724','A'). テーブルデータ(1230,'20120622','20120729','A'). テーブルデータ(1231,'20120622','20120805','A'). テーブルデータ(1232,'20120622','20120623','A'). テーブルデータ(1233,'20120622','20120712','A'). テーブルデータ(1234,'20120622','20120622','A'). テーブルデータ(1235,'20120622','20120628','A'). テーブルデータ(1236,'20120622','20120815','A'). テーブルデータ(1237,'20120622','20120815','A'). テーブルデータ(1238,'20120622','20120715','A'). テーブルデータ(1239,'20120622','20120709','A'). テーブルデータ(1240,'20120623','20120806','A'). テーブルデータ(1241,'20120623','20120819','A'). テーブルデータ(1242,'20120623','20120725','A'). テーブルデータ(1243,'20120623','20120704','A'). テーブルデータ(1244,'20120623','20120819','A'). テーブルデータ(1245,'20120623','20120722','A'). テーブルデータ(1246,'20120623','20120628','A'). テーブルデータ(1247,'20120623','20120818','A'). テーブルデータ(1248,'20120623','20120701','A'). テーブルデータ(1249,'20120623','20120811','A'). テーブルデータ(1250,'20120623','20120807','A'). テーブルデータ(1251,'20120623','20120728','A'). テーブルデータ(1252,'20120623','20120625','A'). テーブルデータ(1253,'20120623','20120704','A'). テーブルデータ(1254,'20120623','20120728','A'). テーブルデータ(1255,'20120623','20120811','A'). テーブルデータ(1256,'20120623','20120821','A'). テーブルデータ(1257,'20120623','20120803','A'). テーブルデータ(1258,'20120623','20120818','A'). テーブルデータ(1259,'20120623','20120725','A'). テーブルデータ(1260,'20120623','20120704','A'). テーブルデータ(1261,'20120623','20120802','A'). テーブルデータ(1262,'20120623','20120718','A'). テーブルデータ(1263,'20120623','20120716','A'). テーブルデータ(1264,'20120624','20120725','A'). テーブルデータ(1265,'20120624','20120703','A'). テーブルデータ(1266,'20120624','20120721','A'). テーブルデータ(1267,'20120625','20120713','A'). テーブルデータ(1268,'20120625','20120707','A'). テーブルデータ(1269,'20120625','20120725','A'). テーブルデータ(1270,'20120625','20120711','A'). テーブルデータ(1271,'20120625','20120808','A'). テーブルデータ(1272,'20120625','20120728','A'). テーブルデータ(1273,'20120625','20120708','A'). テーブルデータ(1274,'20120625','20120701','A'). テーブルデータ(1275,'20120625','20120803','A'). テーブルデータ(1276,'20120625','20120705','A'). テーブルデータ(1277,'20120625','20120709','A'). テーブルデータ(1278,'20120625','20120723','A'). テーブルデータ(1279,'20120625','20120819','A'). テーブルデータ(1280,'20120625','20120805','A'). テーブルデータ(1281,'20120625','20120717','A'). テーブルデータ(1282,'20120625','20120823','A'). テーブルデータ(1283,'20120625','20120712','A'). テーブルデータ(1284,'20120626','20120823','A'). テーブルデータ(1285,'20120626','20120815','A'). テーブルデータ(1286,'20120626','20120824','A'). テーブルデータ(1287,'20120626','20120718','A'). テーブルデータ(1288,'20120627','20120728','A'). テーブルデータ(1289,'20120627','20120814','A'). テーブルデータ(1290,'20120627','20120714','A'). テーブルデータ(1291,'20120627','20120701','A'). テーブルデータ(1292,'20120627','20120708','A'). テーブルデータ(1293,'20120627','20120723','A'). テーブルデータ(1294,'20120627','20120720','A'). テーブルデータ(1295,'20120627','20120824','A'). テーブルデータ(1296,'20120627','20120811','A'). テーブルデータ(1297,'20120627','20120801','A'). テーブルデータ(1298,'20120627','20120717','A'). テーブルデータ(1299,'20120627','20120628','A'). テーブルデータ(1300,'20120627','20120709','A'). テーブルデータ(1301,'20120627','20120812','A'). テーブルデータ(1302,'20120627','20120711','A'). テーブルデータ(1303,'20120627','20120715','A'). テーブルデータ(1304,'20120627','20120722','A'). テーブルデータ(1305,'20120627','20120713','A'). テーブルデータ(1306,'20120627','20120729','A'). テーブルデータ(1307,'20120627','20120811','A'). テーブルデータ(1308,'20120627','20120709','A'). テーブルデータ(1309,'20120627','20120703','A'). テーブルデータ(1310,'20120627','20120825','A'). テーブルデータ(1311,'20120627','20120708','A'). テーブルデータ(1312,'20120628','20120701','A'). テーブルデータ(1313,'20120628','20120629','A'). テーブルデータ(1314,'20120628','20120703','A'). テーブルデータ(1315,'20120628','20120630','A'). テーブルデータ(1316,'20120628','20120714','A'). テーブルデータ(1317,'20120628','20120826','A'). テーブルデータ(1318,'20120628','20120801','A'). テーブルデータ(1319,'20120628','20120702','A'). テーブルデータ(1320,'20120628','20120714','A'). テーブルデータ(1321,'20120628','20120728','A'). テーブルデータ(1322,'20120628','20120705','A'). テーブルデータ(1323,'20120628','20120801','A'). テーブルデータ(1324,'20120628','20120820','A'). テーブルデータ(1325,'20120628','20120824','A'). テーブルデータ(1326,'20120628','20120717','A'). テーブルデータ(1327,'20120628','20120718','A'). テーブルデータ(1328,'20120628','20120708','A'). テーブルデータ(1329,'20120628','20120710','A'). テーブルデータ(1330,'20120628','20120730','A'). テーブルデータ(1331,'20120628','20120823','A'). テーブルデータ(1332,'20120628','20120717','A'). テーブルデータ(1333,'20120628','20120817','A'). テーブルデータ(1334,'20120628','20120711','A'). テーブルデータ(1335,'20120628','20120802','A'). テーブルデータ(1336,'20120629','20120826','A'). テーブルデータ(1337,'20120629','20120815','A'). テーブルデータ(1338,'20120629','20120720','A'). テーブルデータ(1339,'20120629','20120825','A'). テーブルデータ(1340,'20120629','20120818','A'). テーブルデータ(1341,'20120629','20120804','A'). テーブルデータ(1342,'20120629','20120629','A'). テーブルデータ(1343,'20120629','20120812','A'). テーブルデータ(1344,'20120629','20120809','A'). テーブルデータ(1345,'20120629','20120702','A'). テーブルデータ(1346,'20120629','20120629','A'). テーブルデータ(1347,'20120629','20120731','A'). テーブルデータ(1348,'20120629','20120728','A'). テーブルデータ(1349,'20120629','20120824','A'). テーブルデータ(1350,'20120629','20120808','A'). テーブルデータ(1351,'20120629','20120827','A'). テーブルデータ(1352,'20120630','20120715','A'). テーブルデータ(1353,'20120630','20120813','A'). テーブルデータ(1354,'20120630','20120822','A'). テーブルデータ(1355,'20120630','20120726','A'). テーブルデータ(1356,'20120701','20120704','A'). テーブルデータ(1357,'20120701','20120801','A'). テーブルデータ(1358,'20120701','20120730','A'). テーブルデータ(1359,'20120701','20120821','A'). テーブルデータ(1360,'20120701','20120820','A'). テーブルデータ(1361,'20120702','20120706','A'). テーブルデータ(1362,'20120702','20120727','A'). テーブルデータ(1363,'20120702','20120728','A'). テーブルデータ(1364,'20120702','20120704','A'). テーブルデータ(1365,'20120702','20120707','A'). テーブルデータ(1366,'20120702','20120810','A'). テーブルデータ(1367,'20120702','20120822','A'). テーブルデータ(1368,'20120702','20120818','A'). テーブルデータ(1369,'20120702','20120709','A'). テーブルデータ(1370,'20120702','20120815','A'). テーブルデータ(1371,'20120702','20120802','A'). テーブルデータ(1372,'20120702','20120812','A'). テーブルデータ(1373,'20120702','20120810','A'). テーブルデータ(1374,'20120702','20120802','A'). テーブルデータ(1375,'20120702','20120715','A'). テーブルデータ(1376,'20120702','20120710','A'). テーブルデータ(1377,'20120702','20120729','A'). テーブルデータ(1378,'20120702','20120825','A'). テーブルデータ(1379,'20120702','20120830','A'). テーブルデータ(1380,'20120702','20120725','A'). テーブルデータ(1381,'20120703','20120815','A'). テーブルデータ(1382,'20120703','20120711','A'). テーブルデータ(1383,'20120704','20120812','A'). テーブルデータ(1384,'20120704','20120707','A'). テーブルデータ(1385,'20120704','20120831','A'). テーブルデータ(1386,'20120704','20120712','A'). テーブルデータ(1387,'20120704','20120827','A'). テーブルデータ(1388,'20120704','20120813','A'). テーブルデータ(1389,'20120704','20120724','A'). テーブルデータ(1390,'20120704','20120831','A'). テーブルデータ(1391,'20120704','20120710','A'). テーブルデータ(1392,'20120704','20120811','A'). テーブルデータ(1393,'20120704','20120825','A'). テーブルデータ(1394,'20120704','20120707','A'). テーブルデータ(1395,'20120704','20120722','A'). テーブルデータ(1396,'20120704','20120808','A'). テーブルデータ(1397,'20120704','20120823','A'). テーブルデータ(1398,'20120704','20120729','A'). テーブルデータ(1399,'20120704','20120723','A'). テーブルデータ(1400,'20120704','20120726','A'). テーブルデータ(1401,'20120704','20120710','A'). テーブルデータ(1402,'20120704','20120831','A'). テーブルデータ(1403,'20120704','20120818','A'). テーブルデータ(1404,'20120704','20120716','A'). テーブルデータ(1405,'20120704','20120831','A'). テーブルデータ(1406,'20120704','20120717','A'). テーブルデータ(1407,'20120704','20120710','A'). テーブルデータ(1408,'20120704','20120830','A'). テーブルデータ(1409,'20120704','20120801','A'). テーブルデータ(1410,'20120704','20120711','A'). テーブルデータ(1411,'20120705','20120810','A'). テーブルデータ(1412,'20120705','20120731','A'). テーブルデータ(1413,'20120705','20120717','A'). テーブルデータ(1414,'20120706','20120723','A'). テーブルデータ(1415,'20120706','20120726','A'). テーブルデータ(1416,'20120706','20120808','A'). テーブルデータ(1417,'20120706','20120901','A'). テーブルデータ(1418,'20120706','20120807','A'). テーブルデータ(1419,'20120706','20120729','A'). テーブルデータ(1420,'20120706','20120830','A'). テーブルデータ(1421,'20120706','20120717','A'). テーブルデータ(1422,'20120706','20120713','A'). テーブルデータ(1423,'20120706','20120902','A'). テーブルデータ(1424,'20120707','20120810','A'). テーブルデータ(1425,'20120707','20120817','A'). テーブルデータ(1426,'20120707','20120822','A'). テーブルデータ(1427,'20120707','20120830','A'). テーブルデータ(1428,'20120707','20120710','A'). テーブルデータ(1429,'20120707','20120821','A'). テーブルデータ(1430,'20120707','20120820','A'). テーブルデータ(1431,'20120707','20120824','A'). テーブルデータ(1432,'20120707','20120902','A'). テーブルデータ(1433,'20120707','20120819','A'). テーブルデータ(1434,'20120707','20120829','A'). テーブルデータ(1435,'20120707','20120831','A'). テーブルデータ(1436,'20120707','20120816','A'). テーブルデータ(1437,'20120707','20120728','A'). テーブルデータ(1438,'20120707','20120830','A'). テーブルデータ(1439,'20120707','20120712','A'). テーブルデータ(1440,'20120707','20120902','A'). テーブルデータ(1441,'20120707','20120727','A'). テーブルデータ(1442,'20120707','20120724','A'). テーブルデータ(1443,'20120707','20120804','A'). テーブルデータ(1444,'20120707','20120805','A'). テーブルデータ(1445,'20120707','20120805','A'). テーブルデータ(1446,'20120707','20120829','A'). テーブルデータ(1447,'20120707','20120726','A'). テーブルデータ(1448,'20120707','20120830','A'). テーブルデータ(1449,'20120707','20120723','A'). テーブルデータ(1450,'20120707','20120721','A'). テーブルデータ(1451,'20120707','20120712','A'). テーブルデータ(1452,'20120707','20120722','A'). テーブルデータ(1453,'20120707','20120712','A'). テーブルデータ(1454,'20120708','20120827','A'). テーブルデータ(1455,'20120708','20120823','A'). テーブルデータ(1456,'20120708','20120720','A'). テーブルデータ(1457,'20120708','20120813','A'). テーブルデータ(1458,'20120708','20120826','A'). テーブルデータ(1459,'20120708','20120826','A'). テーブルデータ(1460,'20120708','20120720','A'). テーブルデータ(1461,'20120708','20120806','A'). テーブルデータ(1462,'20120708','20120823','A'). テーブルデータ(1463,'20120708','20120901','A'). テーブルデータ(1464,'20120708','20120723','A'). テーブルデータ(1465,'20120708','20120810','A'). テーブルデータ(1466,'20120708','20120805','A'). テーブルデータ(1467,'20120708','20120813','A'). テーブルデータ(1468,'20120708','20120804','A'). テーブルデータ(1469,'20120708','20120810','A'). テーブルデータ(1470,'20120708','20120803','A'). テーブルデータ(1471,'20120708','20120817','A'). テーブルデータ(1472,'20120708','20120819','A'). テーブルデータ(1473,'20120708','20120823','A'). テーブルデータ(1474,'20120708','20120717','A'). テーブルデータ(1475,'20120708','20120711','A'). テーブルデータ(1476,'20120708','20120817','A'). テーブルデータ(1477,'20120708','20120805','A'). テーブルデータ(1478,'20120708','20120903','A'). テーブルデータ(1479,'20120708','20120902','A'). テーブルデータ(1480,'20120708','20120812','A'). テーブルデータ(1481,'20120709','20120713','A'). テーブルデータ(1482,'20120709','20120818','A'). テーブルデータ(1483,'20120709','20120729','A'). テーブルデータ(1484,'20120710','20120728','A'). テーブルデータ(1485,'20120710','20120804','A'). テーブルデータ(1486,'20120710','20120724','A'). テーブルデータ(1487,'20120710','20120907','A'). テーブルデータ(1488,'20120710','20120724','A'). テーブルデータ(1489,'20120710','20120805','A'). テーブルデータ(1490,'20120710','20120807','A'). テーブルデータ(1491,'20120710','20120901','A'). テーブルデータ(1492,'20120710','20120801','A'). テーブルデータ(1493,'20120710','20120822','A'). テーブルデータ(1494,'20120710','20120805','A'). テーブルデータ(1495,'20120710','20120821','A'). テーブルデータ(1496,'20120710','20120722','A'). テーブルデータ(1497,'20120710','20120902','A'). テーブルデータ(1498,'20120710','20120717','A'). テーブルデータ(1499,'20120710','20120809','A'). テーブルデータ(1500,'20120710','20120813','A'). テーブルデータ(1501,'20120711','20120727','A'). テーブルデータ(1502,'20120711','20120815','A'). テーブルデータ(1503,'20120711','20120824','A'). テーブルデータ(1504,'20120711','20120905','A'). テーブルデータ(1505,'20120711','20120715','A'). テーブルデータ(1506,'20120711','20120822','A'). テーブルデータ(1507,'20120711','20120825','A'). テーブルデータ(1508,'20120711','20120811','A'). テーブルデータ(1509,'20120711','20120816','A'). テーブルデータ(1510,'20120711','20120821','A'). テーブルデータ(1511,'20120711','20120714','A'). テーブルデータ(1512,'20120711','20120906','A'). テーブルデータ(1513,'20120711','20120807','A'). テーブルデータ(1514,'20120711','20120801','A'). テーブルデータ(1515,'20120711','20120802','A'). テーブルデータ(1516,'20120711','20120821','A'). テーブルデータ(1517,'20120711','20120731','A'). テーブルデータ(1518,'20120711','20120808','A'). テーブルデータ(1519,'20120711','20120908','A'). テーブルデータ(1520,'20120711','20120820','A'). テーブルデータ(1521,'20120712','20120725','A'). テーブルデータ(1522,'20120712','20120805','A'). テーブルデータ(1523,'20120712','20120829','A'). テーブルデータ(1524,'20120712','20120905','A'). テーブルデータ(1525,'20120712','20120809','A'). テーブルデータ(1526,'20120712','20120823','A'). テーブルデータ(1527,'20120712','20120714','A'). テーブルデータ(1528,'20120712','20120831','A'). テーブルデータ(1529,'20120712','20120728','A'). テーブルデータ(1530,'20120712','20120824','A'). テーブルデータ(1531,'20120712','20120718','A'). テーブルデータ(1532,'20120712','20120901','A'). テーブルデータ(1533,'20120712','20120801','A'). テーブルデータ(1534,'20120712','20120905','A'). テーブルデータ(1535,'20120712','20120828','A'). テーブルデータ(1536,'20120712','20120904','A'). テーブルデータ(1537,'20120712','20120813','A'). テーブルデータ(1538,'20120712','20120722','A'). テーブルデータ(1539,'20120712','20120811','A'). テーブルデータ(1540,'20120712','20120725','A'). テーブルデータ(1541,'20120712','20120725','A'). テーブルデータ(1542,'20120712','20120731','A'). テーブルデータ(1543,'20120713','20120816','A'). テーブルデータ(1544,'20120713','20120815','A'). テーブルデータ(1545,'20120713','20120726','A'). テーブルデータ(1546,'20120713','20120905','A'). テーブルデータ(1547,'20120713','20120715','A'). テーブルデータ(1548,'20120713','20120717','A'). テーブルデータ(1549,'20120713','20120817','A'). テーブルデータ(1550,'20120713','20120805','A'). テーブルデータ(1551,'20120713','20120731','A'). テーブルデータ(1552,'20120713','20120902','A'). テーブルデータ(1553,'20120713','20120724','A'). テーブルデータ(1554,'20120714','20120725','A'). テーブルデータ(1555,'20120714','20120828','A'). テーブルデータ(1556,'20120714','20120722','A'). テーブルデータ(1557,'20120714','20120715','A'). テーブルデータ(1558,'20120714','20120905','A'). テーブルデータ(1559,'20120714','20120826','A'). テーブルデータ(1560,'20120714','20120911','A'). テーブルデータ(1561,'20120714','20120820','A'). テーブルデータ(1562,'20120714','20120907','A'). テーブルデータ(1563,'20120714','20120906','A'). テーブルデータ(1564,'20120714','20120807','A'). テーブルデータ(1565,'20120714','20120901','A'). テーブルデータ(1566,'20120714','20120809','A'). テーブルデータ(1567,'20120714','20120810','A'). テーブルデータ(1568,'20120715','20120815','A'). テーブルデータ(1569,'20120715','20120824','A'). テーブルデータ(1570,'20120715','20120815','A'). テーブルデータ(1571,'20120715','20120718','A'). テーブルデータ(1572,'20120715','20120722','A'). テーブルデータ(1573,'20120715','20120910','A'). テーブルデータ(1574,'20120715','20120731','A'). テーブルデータ(1575,'20120715','20120906','A'). テーブルデータ(1576,'20120715','20120912','A'). テーブルデータ(1577,'20120715','20120805','A'). テーブルデータ(1578,'20120715','20120804','A'). テーブルデータ(1579,'20120715','20120729','A'). テーブルデータ(1580,'20120715','20120815','A'). テーブルデータ(1581,'20120716','20120803','A'). テーブルデータ(1582,'20120716','20120821','A'). テーブルデータ(1583,'20120716','20120730','A'). テーブルデータ(1584,'20120716','20120719','A'). テーブルデータ(1585,'20120716','20120829','A'). テーブルデータ(1586,'20120716','20120723','A'). テーブルデータ(1587,'20120716','20120911','A'). テーブルデータ(1588,'20120716','20120805','A'). テーブルデータ(1589,'20120716','20120723','A'). テーブルデータ(1590,'20120716','20120819','A'). テーブルデータ(1591,'20120716','20120731','A'). テーブルデータ(1592,'20120716','20120907','A'). テーブルデータ(1593,'20120717','20120912','A'). テーブルデータ(1594,'20120717','20120729','A'). テーブルデータ(1595,'20120717','20120726','A'). テーブルデータ(1596,'20120717','20120726','A'). テーブルデータ(1597,'20120717','20120829','A'). テーブルデータ(1598,'20120717','20120905','A'). テーブルデータ(1599,'20120717','20120818','A'). テーブルデータ(1600,'20120717','20120902','A'). テーブルデータ(1601,'20120717','20120904','A'). テーブルデータ(1602,'20120717','20120815','A'). テーブルデータ(1603,'20120717','20120910','A'). テーブルデータ(1604,'20120717','20120828','A'). テーブルデータ(1605,'20120717','20120806','A'). テーブルデータ(1606,'20120717','20120725','A'). テーブルデータ(1607,'20120717','20120720','A'). テーブルデータ(1608,'20120717','20120821','A'). テーブルデータ(1609,'20120717','20120825','A'). テーブルデータ(1610,'20120717','20120723','A'). テーブルデータ(1611,'20120717','20120831','A'). テーブルデータ(1612,'20120717','20120802','A'). テーブルデータ(1613,'20120717','20120730','A'). テーブルデータ(1614,'20120718','20120908','A'). テーブルデータ(1615,'20120718','20120807','A'). テーブルデータ(1616,'20120718','20120824','A'). テーブルデータ(1617,'20120718','20120722','A'). テーブルデータ(1618,'20120718','20120814','A'). テーブルデータ(1619,'20120718','20120721','A'). テーブルデータ(1620,'20120718','20120807','A'). テーブルデータ(1621,'20120718','20120808','A'). テーブルデータ(1622,'20120718','20120902','A'). テーブルデータ(1623,'20120718','20120804','A'). テーブルデータ(1624,'20120718','20120812','A'). テーブルデータ(1625,'20120719','20120806','A'). テーブルデータ(1626,'20120719','20120727','A'). テーブルデータ(1627,'20120719','20120817','A'). テーブルデータ(1628,'20120719','20120907','A'). テーブルデータ(1629,'20120719','20120904','A'). テーブルデータ(1630,'20120719','20120806','A'). テーブルデータ(1631,'20120719','20120808','A'). テーブルデータ(1632,'20120719','20120831','A'). テーブルデータ(1633,'20120719','20120720','A'). テーブルデータ(1634,'20120719','20120828','A'). テーブルデータ(1635,'20120719','20120831','A'). テーブルデータ(1636,'20120719','20120913','A'). テーブルデータ(1637,'20120719','20120726','A'). テーブルデータ(1638,'20120719','20120811','A'). テーブルデータ(1639,'20120719','20120721','A'). テーブルデータ(1640,'20120719','20120909','A'). テーブルデータ(1641,'20120719','20120819','A'). テーブルデータ(1642,'20120719','20120803','A'). テーブルデータ(1643,'20120720','20120812','A'). テーブルデータ(1644,'20120720','20120817','A'). テーブルデータ(1645,'20120720','20120722','A'). テーブルデータ(1646,'20120720','20120817','A'). テーブルデータ(1647,'20120721','20120917','A'). テーブルデータ(1648,'20120721','20120830','A'). テーブルデータ(1649,'20120721','20120729','A'). テーブルデータ(1650,'20120721','20120826','A'). テーブルデータ(1651,'20120721','20120908','A'). テーブルデータ(1652,'20120721','20120823','A'). テーブルデータ(1653,'20120721','20120813','A'). テーブルデータ(1654,'20120721','20120728','A'). テーブルデータ(1655,'20120721','20120824','A'). テーブルデータ(1656,'20120721','20120912','A'). テーブルデータ(1657,'20120721','20120916','A'). テーブルデータ(1658,'20120721','20120811','A'). テーブルデータ(1659,'20120721','20120724','A'). テーブルデータ(1660,'20120721','20120730','A'). テーブルデータ(1661,'20120721','20120915','A'). テーブルデータ(1662,'20120721','20120725','A'). テーブルデータ(1663,'20120721','20120901','A'). テーブルデータ(1664,'20120721','20120830','A'). テーブルデータ(1665,'20120721','20120911','A'). テーブルデータ(1666,'20120721','20120908','A'). テーブルデータ(1667,'20120721','20120914','A'). テーブルデータ(1668,'20120721','20120906','A'). テーブルデータ(1669,'20120721','20120824','A'). テーブルデータ(1670,'20120721','20120816','A'). テーブルデータ(1671,'20120721','20120913','A'). テーブルデータ(1672,'20120721','20120918','A'). テーブルデータ(1673,'20120722','20120813','A'). テーブルデータ(1674,'20120722','20120913','A'). テーブルデータ(1675,'20120722','20120723','A'). テーブルデータ(1676,'20120722','20120809','A'). テーブルデータ(1677,'20120722','20120911','A'). テーブルデータ(1678,'20120722','20120824','A'). テーブルデータ(1679,'20120722','20120809','A'). テーブルデータ(1680,'20120722','20120810','A'). テーブルデータ(1681,'20120722','20120813','A'). テーブルデータ(1682,'20120722','20120904','A'). テーブルデータ(1683,'20120722','20120826','A'). テーブルデータ(1684,'20120722','20120812','A'). テーブルデータ(1685,'20120723','20120812','A'). テーブルデータ(1686,'20120723','20120803','A'). テーブルデータ(1687,'20120723','20120815','A'). テーブルデータ(1688,'20120723','20120815','A'). テーブルデータ(1689,'20120723','20120812','A'). テーブルデータ(1690,'20120723','20120812','A'). テーブルデータ(1691,'20120723','20120812','A'). テーブルデータ(1692,'20120723','20120725','A'). テーブルデータ(1693,'20120723','20120913','A'). テーブルデータ(1694,'20120723','20120804','A'). テーブルデータ(1695,'20120723','20120905','A'). テーブルデータ(1696,'20120724','20120921','A'). テーブルデータ(1697,'20120724','20120811','A'). テーブルデータ(1698,'20120724','20120729','A'). テーブルデータ(1699,'20120724','20120916','A'). テーブルデータ(1700,'20120724','20120810','A'). テーブルデータ(1701,'20120724','20120831','A'). テーブルデータ(1702,'20120724','20120809','A'). テーブルデータ(1703,'20120724','20120803','A'). テーブルデータ(1704,'20120724','20120902','A'). テーブルデータ(1705,'20120724','20120819','A'). テーブルデータ(1706,'20120724','20120916','A'). テーブルデータ(1707,'20120724','20120806','A'). テーブルデータ(1708,'20120724','20120830','A'). テーブルデータ(1709,'20120724','20120729','A'). テーブルデータ(1710,'20120724','20120821','A'). テーブルデータ(1711,'20120724','20120814','A'). テーブルデータ(1712,'20120724','20120902','A'). テーブルデータ(1713,'20120724','20120911','A'). テーブルデータ(1714,'20120725','20120725','A'). テーブルデータ(1715,'20120725','20120915','A'). テーブルデータ(1716,'20120725','20120909','A'). テーブルデータ(1717,'20120725','20120818','A'). テーブルデータ(1718,'20120725','20120807','A'). テーブルデータ(1719,'20120725','20120921','A'). テーブルデータ(1720,'20120725','20120830','A'). テーブルデータ(1721,'20120725','20120801','A'). テーブルデータ(1722,'20120725','20120913','A'). テーブルデータ(1723,'20120725','20120911','A'). テーブルデータ(1724,'20120725','20120914','A'). テーブルデータ(1725,'20120725','20120823','A'). テーブルデータ(1726,'20120725','20120911','A'). テーブルデータ(1727,'20120725','20120726','A'). テーブルデータ(1728,'20120725','20120820','A'). テーブルデータ(1729,'20120725','20120828','A'). テーブルデータ(1730,'20120725','20120812','A'). テーブルデータ(1731,'20120725','20120730','A'). テーブルデータ(1732,'20120725','20120913','A'). テーブルデータ(1733,'20120725','20120815','A'). テーブルデータ(1734,'20120725','20120908','A'). テーブルデータ(1735,'20120725','20120803','A'). テーブルデータ(1736,'20120725','20120801','A'). テーブルデータ(1737,'20120725','20120913','A'). テーブルデータ(1738,'20120726','20120807','A'). テーブルデータ(1739,'20120726','20120813','A'). テーブルデータ(1740,'20120726','20120923','A'). テーブルデータ(1741,'20120726','20120909','A'). テーブルデータ(1742,'20120726','20120726','A'). テーブルデータ(1743,'20120726','20120817','A'). テーブルデータ(1744,'20120726','20120901','A'). テーブルデータ(1745,'20120726','20120916','A'). テーブルデータ(1746,'20120726','20120803','A'). テーブルデータ(1747,'20120726','20120727','A'). テーブルデータ(1748,'20120726','20120921','A'). テーブルデータ(1749,'20120726','20120802','A'). テーブルデータ(1750,'20120726','20120824','A'). テーブルデータ(1751,'20120726','20120921','A'). テーブルデータ(1752,'20120726','20120913','A'). テーブルデータ(1753,'20120726','20120813','A'). テーブルデータ(1754,'20120726','20120912','A'). テーブルデータ(1755,'20120727','20120923','A'). テーブルデータ(1756,'20120727','20120915','A'). テーブルデータ(1757,'20120727','20120910','A'). テーブルデータ(1758,'20120727','20120828','A'). テーブルデータ(1759,'20120727','20120727','A'). テーブルデータ(1760,'20120727','20120907','A'). テーブルデータ(1761,'20120727','20120810','A'). テーブルデータ(1762,'20120727','20120809','A'). テーブルデータ(1763,'20120727','20120823','A'). テーブルデータ(1764,'20120727','20120819','A'). テーブルデータ(1765,'20120727','20120816','A'). テーブルデータ(1766,'20120727','20120806','A'). テーブルデータ(1767,'20120727','20120728','A'). テーブルデータ(1768,'20120727','20120821','A'). テーブルデータ(1769,'20120727','20120824','A'). テーブルデータ(1770,'20120727','20120727','A'). テーブルデータ(1771,'20120727','20120806','A'). テーブルデータ(1772,'20120727','20120816','A'). テーブルデータ(1773,'20120727','20120810','A'). テーブルデータ(1774,'20120727','20120912','A'). テーブルデータ(1775,'20120728','20120820','A'). テーブルデータ(1776,'20120728','20120907','A'). テーブルデータ(1777,'20120728','20120920','A'). テーブルデータ(1778,'20120728','20120819','A'). テーブルデータ(1779,'20120728','20120807','A'). テーブルデータ(1780,'20120728','20120917','A'). テーブルデータ(1781,'20120729','20120818','A'). テーブルデータ(1782,'20120729','20120907','A'). テーブルデータ(1783,'20120729','20120812','A'). テーブルデータ(1784,'20120729','20120816','A'). テーブルデータ(1785,'20120730','20120920','A'). テーブルデータ(1786,'20120730','20120918','A'). テーブルデータ(1787,'20120730','20120821','A'). テーブルデータ(1788,'20120730','20120902','A'). テーブルデータ(1789,'20120730','20120804','A'). テーブルデータ(1790,'20120730','20120827','A'). テーブルデータ(1791,'20120730','20120922','A'). テーブルデータ(1792,'20120730','20120819','A'). テーブルデータ(1793,'20120730','20120916','A'). テーブルデータ(1794,'20120730','20120803','A'). テーブルデータ(1795,'20120730','20120821','A'). テーブルデータ(1796,'20120730','20120804','A'). テーブルデータ(1797,'20120730','20120823','A'). テーブルデータ(1798,'20120730','20120821','A'). テーブルデータ(1799,'20120730','20120806','A'). テーブルデータ(1800,'20120730','20120913','A'). テーブルデータ(1801,'20120730','20120905','A'). テーブルデータ(1802,'20120730','20120923','A'). テーブルデータ(1803,'20120730','20120910','A'). テーブルデータ(1804,'20120730','20120920','A'). テーブルデータ(1805,'20120730','20120827','A'). テーブルデータ(1806,'20120730','20120904','A'). テーブルデータ(1807,'20120730','20120805','A'). テーブルデータ(1808,'20120731','20120820','A'). テーブルデータ(1809,'20120801','20120921','A'). テーブルデータ(1810,'20120801','20120922','A'). テーブルデータ(1811,'20120801','20120817','A'). テーブルデータ(1812,'20120801','20120810','A'). テーブルデータ(1813,'20120801','20120815','A'). テーブルデータ(1814,'20120801','20120809','A'). テーブルデータ(1815,'20120801','20120922','A'). テーブルデータ(1816,'20120801','20120829','A'). テーブルデータ(1817,'20120801','20120912','A'). テーブルデータ(1818,'20120801','20120927','A'). テーブルデータ(1819,'20120802','20120907','A'). テーブルデータ(1820,'20120802','20120819','A'). テーブルデータ(1821,'20120802','20120908','A'). テーブルデータ(1822,'20120802','20120911','A'). テーブルデータ(1823,'20120802','20120910','A'). テーブルデータ(1824,'20120802','20120905','A'). テーブルデータ(1825,'20120802','20120807','A'). テーブルデータ(1826,'20120802','20120925','A'). テーブルデータ(1827,'20120802','20120913','A'). テーブルデータ(1828,'20120802','20120913','A'). テーブルデータ(1829,'20120802','20120825','A'). テーブルデータ(1830,'20120802','20120831','A'). テーブルデータ(1831,'20120802','20120818','A'). テーブルデータ(1832,'20120802','20120817','A'). テーブルデータ(1833,'20120802','20120928','A'). テーブルデータ(1834,'20120802','20120915','A'). テーブルデータ(1835,'20120802','20120815','A'). テーブルデータ(1836,'20120802','20120821','A'). テーブルデータ(1837,'20120802','20120806','A'). テーブルデータ(1838,'20120803','20120813','A'). テーブルデータ(1839,'20120803','20120928','A'). テーブルデータ(1840,'20120803','20120902','A'). テーブルデータ(1841,'20120803','20120815','A'). テーブルデータ(1842,'20120803','20120805','A'). テーブルデータ(1843,'20120803','20120910','A'). テーブルデータ(1844,'20120803','20120807','A'). テーブルデータ(1845,'20120803','20120826','A'). テーブルデータ(1846,'20120803','20120824','A'). テーブルデータ(1847,'20120803','20120804','A'). テーブルデータ(1848,'20120803','20120814','A'). テーブルデータ(1849,'20120803','20120921','A'). テーブルデータ(1850,'20120803','20120813','A'). テーブルデータ(1851,'20120803','20120912','A'). テーブルデータ(1852,'20120803','20120902','A'). テーブルデータ(1853,'20120804','20120819','A'). テーブルデータ(1854,'20120804','20120831','A'). テーブルデータ(1855,'20120804','20120909','A'). テーブルデータ(1856,'20120804','20120922','A'). テーブルデータ(1857,'20120804','20120805','A'). テーブルデータ(1858,'20120804','20121002','A'). テーブルデータ(1859,'20120804','20120822','A'). テーブルデータ(1860,'20120804','20120821','A'). テーブルデータ(1861,'20120804','20120810','A'). テーブルデータ(1862,'20120804','20120819','A'). テーブルデータ(1863,'20120804','20120805','A'). テーブルデータ(1864,'20120804','20120815','A'). テーブルデータ(1865,'20120804','20120907','A'). テーブルデータ(1866,'20120805','20120830','A'). テーブルデータ(1867,'20120805','20120911','A'). テーブルデータ(1868,'20120805','20120920','A'). テーブルデータ(1869,'20120805','20120930','A'). テーブルデータ(1870,'20120805','20120923','A'). テーブルデータ(1871,'20120805','20120915','A'). テーブルデータ(1872,'20120805','20120908','A'). テーブルデータ(1873,'20120805','20120927','A'). テーブルデータ(1874,'20120805','20120930','A'). テーブルデータ(1875,'20120805','20120921','A'). テーブルデータ(1876,'20120805','20120920','A'). テーブルデータ(1877,'20120805','20121003','A'). テーブルデータ(1878,'20120805','20120911','A'). テーブルデータ(1879,'20120805','20120930','A'). テーブルデータ(1880,'20120805','20120914','A'). テーブルデータ(1881,'20120805','20121003','A'). テーブルデータ(1882,'20120805','20120904','A'). テーブルデータ(1883,'20120805','20120921','A'). テーブルデータ(1884,'20120805','20120831','A'). テーブルデータ(1885,'20120805','20120811','A'). テーブルデータ(1886,'20120805','20120902','A'). テーブルデータ(1887,'20120805','20120901','A'). テーブルデータ(1888,'20120805','20121001','A'). テーブルデータ(1889,'20120805','20120920','A'). テーブルデータ(1890,'20120805','20120910','A'). テーブルデータ(1891,'20120805','20120929','A'). テーブルデータ(1892,'20120805','20120927','A'). テーブルデータ(1893,'20120805','20120911','A'). テーブルデータ(1894,'20120805','20120811','A'). テーブルデータ(1895,'20120806','20120902','A'). テーブルデータ(1896,'20120806','20120907','A'). テーブルデータ(1897,'20120806','20121001','A'). テーブルデータ(1898,'20120806','20120820','A'). テーブルデータ(1899,'20120806','20120826','A'). テーブルデータ(1900,'20120806','20120912','A'). テーブルデータ(1901,'20120806','20120930','A'). テーブルデータ(1902,'20120806','20120929','A'). テーブルデータ(1903,'20120806','20120905','A'). テーブルデータ(1904,'20120806','20120926','A'). テーブルデータ(1905,'20120806','20120917','A'). テーブルデータ(1906,'20120806','20120814','A'). テーブルデータ(1907,'20120806','20120925','A'). テーブルデータ(1908,'20120806','20120817','A'). テーブルデータ(1909,'20120806','20120811','A'). テーブルデータ(1910,'20120806','20120828','A'). テーブルデータ(1911,'20120806','20120816','A'). テーブルデータ(1912,'20120806','20120902','A'). テーブルデータ(1913,'20120806','20120807','A'). テーブルデータ(1914,'20120806','20120911','A'). テーブルデータ(1915,'20120807','20120905','A'). テーブルデータ(1916,'20120807','20121001','A'). テーブルデータ(1917,'20120807','20120830','A'). テーブルデータ(1918,'20120807','20120822','A'). テーブルデータ(1919,'20120807','20120907','A'). テーブルデータ(1920,'20120808','20120808','A'). テーブルデータ(1921,'20120808','20120808','A'). テーブルデータ(1922,'20120808','20120825','A'). テーブルデータ(1923,'20120808','20120828','A'). テーブルデータ(1924,'20120808','20120905','A'). テーブルデータ(1925,'20120808','20120918','A'). テーブルデータ(1926,'20120808','20120824','A'). テーブルデータ(1927,'20120808','20120911','A'). テーブルデータ(1928,'20120808','20120809','A'). テーブルデータ(1929,'20120808','20121001','A'). テーブルデータ(1930,'20120808','20120906','A'). テーブルデータ(1931,'20120808','20120925','A'). テーブルデータ(1932,'20120809','20120821','A'). テーブルデータ(1933,'20120809','20120831','A'). テーブルデータ(1934,'20120809','20120903','A'). テーブルデータ(1935,'20120809','20120811','A'). テーブルデータ(1936,'20120809','20120911','A'). テーブルデータ(1937,'20120809','20120831','A'). テーブルデータ(1938,'20120809','20120826','A'). テーブルデータ(1939,'20120809','20120921','A'). テーブルデータ(1940,'20120809','20120927','A'). テーブルデータ(1941,'20120809','20120819','A'). テーブルデータ(1942,'20120809','20120820','A'). テーブルデータ(1943,'20120809','20120824','A'). テーブルデータ(1944,'20120809','20120918','A'). テーブルデータ(1945,'20120809','20120815','A'). テーブルデータ(1946,'20120809','20120917','A'). テーブルデータ(1947,'20120809','20120925','A'). テーブルデータ(1948,'20120809','20120907','A'). テーブルデータ(1949,'20120810','20120927','A'). テーブルデータ(1950,'20120810','20120908','A'). テーブルデータ(1951,'20120810','20121008','A'). テーブルデータ(1952,'20120810','20120818','A'). テーブルデータ(1953,'20120810','20120928','A'). テーブルデータ(1954,'20120810','20120912','A'). テーブルデータ(1955,'20120810','20120826','A'). テーブルデータ(1956,'20120810','20120902','A'). テーブルデータ(1957,'20120810','20120905','A'). テーブルデータ(1958,'20120810','20120820','A'). テーブルデータ(1959,'20120810','20120923','A'). テーブルデータ(1960,'20120810','20120824','A'). テーブルデータ(1961,'20120810','20120829','A'). テーブルデータ(1962,'20120811','20120916','A'). テーブルデータ(1963,'20120811','20120924','A'). テーブルデータ(1964,'20120811','20121001','A'). テーブルデータ(1965,'20120811','20120820','A'). テーブルデータ(1966,'20120811','20121008','A'). テーブルデータ(1967,'20120811','20120811','A'). テーブルデータ(1968,'20120811','20120924','A'). テーブルデータ(1969,'20120811','20120919','A'). テーブルデータ(1970,'20120811','20120821','A'). テーブルデータ(1971,'20120811','20121005','A'). テーブルデータ(1972,'20120811','20121005','A'). テーブルデータ(1973,'20120811','20120930','A'). テーブルデータ(1974,'20120811','20120812','A'). テーブルデータ(1975,'20120811','20120906','A'). テーブルデータ(1976,'20120811','20120910','A'). テーブルデータ(1977,'20120811','20120902','A'). テーブルデータ(1978,'20120811','20120819','A'). テーブルデータ(1979,'20120811','20120829','A'). テーブルデータ(1980,'20120811','20120924','A'). テーブルデータ(1981,'20120811','20121009','A'). テーブルデータ(1982,'20120811','20120829','A'). テーブルデータ(1983,'20120811','20120913','A'). テーブルデータ(1984,'20120811','20120904','A'). テーブルデータ(1985,'20120811','20120914','A'). テーブルデータ(1986,'20120811','20120929','A'). テーブルデータ(1987,'20120811','20121001','A'). テーブルデータ(1988,'20120811','20120917','A'). テーブルデータ(1989,'20120812','20121008','A'). テーブルデータ(1990,'20120812','20121007','A'). テーブルデータ(1991,'20120812','20120903','A'). テーブルデータ(1992,'20120812','20120915','A'). テーブルデータ(1993,'20120812','20120913','A'). テーブルデータ(1994,'20120812','20120817','A'). テーブルデータ(1995,'20120812','20120916','A'). テーブルデータ(1996,'20120812','20120911','A'). テーブルデータ(1997,'20120812','20120817','A'). テーブルデータ(1998,'20120812','20120824','A'). テーブルデータ(1999,'20120812','20120821','A'). テーブルデータ(2000,'20120812','20120819','A'). テーブルデータ(2001,'20120812','20120819','A'). テーブルデータ(2002,'20120812','20121007','A'). テーブルデータ(2003,'20120812','20121009','A'). テーブルデータ(2004,'20120812','20120813','A'). テーブルデータ(2005,'20120812','20120903','A'). テーブルデータ(2006,'20120812','20120901','A'). テーブルデータ(2007,'20120812','20120904','A'). テーブルデータ(2008,'20120812','20120903','A'). テーブルデータ(2009,'20120812','20120919','A'). テーブルデータ(2010,'20120812','20120819','A'). テーブルデータ(2011,'20120812','20120826','A'). テーブルデータ(2012,'20120812','20121007','A'). テーブルデータ(2013,'20120812','20120914','A'). テーブルデータ(2014,'20120812','20120919','A'). テーブルデータ(2015,'20120813','20120827','A'). テーブルデータ(2016,'20120814','20120821','A'). テーブルデータ(2017,'20120814','20120922','A'). テーブルデータ(2018,'20120814','20120910','A'). テーブルデータ(2019,'20120814','20121008','A'). テーブルデータ(2020,'20120814','20120815','A'). テーブルデータ(2021,'20120814','20121006','A'). テーブルデータ(2022,'20120814','20120910','A'). テーブルデータ(2023,'20120814','20121011','A'). テーブルデータ(2024,'20120814','20120903','A'). テーブルデータ(2025,'20120814','20121002','A'). テーブルデータ(2026,'20120814','20121008','A'). テーブルデータ(2027,'20120814','20120915','A'). テーブルデータ(2028,'20120814','20121004','A'). テーブルデータ(2029,'20120814','20120817','A'). テーブルデータ(2030,'20120814','20120915','A'). テーブルデータ(2031,'20120814','20120930','A'). テーブルデータ(2032,'20120814','20121006','A'). テーブルデータ(2033,'20120814','20120916','A'). テーブルデータ(2034,'20120814','20120816','A'). テーブルデータ(2035,'20120814','20120827','A'). テーブルデータ(2036,'20120814','20121001','A'). テーブルデータ(2037,'20120814','20120830','A'). テーブルデータ(2038,'20120814','20121004','A'). テーブルデータ(2039,'20120814','20121009','A'). テーブルデータ(2040,'20120814','20120913','A'). テーブルデータ(2041,'20120814','20120922','A'). テーブルデータ(2042,'20120814','20120904','A'). テーブルデータ(2043,'20120814','20120823','A'). テーブルデータ(2044,'20120814','20120815','A'). テーブルデータ(2045,'20120814','20120918','A'). テーブルデータ(2046,'20120815','20120824','A'). テーブルデータ(2047,'20120816','20121004','A'). テーブルデータ(2048,'20120816','20121011','A'). テーブルデータ(2049,'20120816','20120824','A'). テーブルデータ(2050,'20120816','20120927','A'). テーブルデータ(2051,'20120816','20120909','A'). テーブルデータ(2052,'20120816','20120822','A'). テーブルデータ(2053,'20120816','20121010','A'). テーブルデータ(2054,'20120816','20120829','A'). テーブルデータ(2055,'20120816','20121009','A'). テーブルデータ(2056,'20120816','20120912','A'). テーブルデータ(2057,'20120816','20120820','A'). テーブルデータ(2058,'20120816','20121012','A'). テーブルデータ(2059,'20120816','20121006','A'). テーブルデータ(2060,'20120816','20120929','A'). テーブルデータ(2061,'20120816','20121005','A'). テーブルデータ(2062,'20120817','20120924','A'). テーブルデータ(2063,'20120817','20120820','A'). テーブルデータ(2064,'20120817','20120830','A'). テーブルデータ(2065,'20120817','20121010','A'). テーブルデータ(2066,'20120817','20121002','A'). テーブルデータ(2067,'20120817','20120818','A'). テーブルデータ(2068,'20120817','20120911','A'). テーブルデータ(2069,'20120817','20120911','A'). テーブルデータ(2070,'20120817','20120831','A'). テーブルデータ(2071,'20120817','20120912','A'). テーブルデータ(2072,'20120817','20120912','A'). テーブルデータ(2073,'20120817','20121005','A'). テーブルデータ(2074,'20120817','20121012','A'). テーブルデータ(2075,'20120817','20120913','A'). テーブルデータ(2076,'20120817','20121011','A'). テーブルデータ(2077,'20120817','20121002','A'). テーブルデータ(2078,'20120817','20120910','A'). テーブルデータ(2079,'20120817','20120820','A'). テーブルデータ(2080,'20120817','20120906','A'). テーブルデータ(2081,'20120817','20120926','A'). テーブルデータ(2082,'20120817','20120819','A'). テーブルデータ(2083,'20120817','20120901','A'). テーブルデータ(2084,'20120817','20121009','A'). テーブルデータ(2085,'20120817','20121004','A'). テーブルデータ(2086,'20120817','20120921','A'). テーブルデータ(2087,'20120818','20121002','A'). テーブルデータ(2088,'20120818','20120913','A'). テーブルデータ(2089,'20120818','20120913','A'). テーブルデータ(2090,'20120818','20120914','A'). テーブルデータ(2091,'20120818','20120930','A'). テーブルデータ(2092,'20120818','20120822','A'). テーブルデータ(2093,'20120818','20120917','A'). テーブルデータ(2094,'20120818','20121005','A'). テーブルデータ(2095,'20120818','20121007','A'). テーブルデータ(2096,'20120818','20120826','A'). テーブルデータ(2097,'20120818','20120928','A'). テーブルデータ(2098,'20120818','20120902','A'). テーブルデータ(2099,'20120818','20120920','A'). テーブルデータ(2100,'20120818','20121012','A'). テーブルデータ(2101,'20120818','20120928','A'). テーブルデータ(2102,'20120818','20121008','A'). テーブルデータ(2103,'20120818','20121001','A'). テーブルデータ(2104,'20120818','20120917','A'). テーブルデータ(2105,'20120818','20120829','A'). テーブルデータ(2106,'20120818','20120918','A'). テーブルデータ(2107,'20120818','20120826','A'). テーブルデータ(2108,'20120819','20120915','A'). テーブルデータ(2109,'20120819','20120916','A'). テーブルデータ(2110,'20120819','20120903','A'). テーブルデータ(2111,'20120819','20120909','A'). テーブルデータ(2112,'20120819','20120924','A'). テーブルデータ(2113,'20120819','20120819','A'). テーブルデータ(2114,'20120820','20120831','A'). テーブルデータ(2115,'20120820','20121001','A'). テーブルデータ(2116,'20120820','20121013','A'). テーブルデータ(2117,'20120820','20120918','A'). テーブルデータ(2118,'20120820','20120820','A'). テーブルデータ(2119,'20120820','20120910','A'). テーブルデータ(2120,'20120820','20120824','A'). テーブルデータ(2121,'20120820','20120824','A'). テーブルデータ(2122,'20120820','20121002','A'). テーブルデータ(2123,'20120820','20121011','A'). テーブルデータ(2124,'20120821','20121011','A'). テーブルデータ(2125,'20120821','20120923','A'). テーブルデータ(2126,'20120821','20120823','A'). テーブルデータ(2127,'20120821','20120906','A'). テーブルデータ(2128,'20120821','20120910','A'). テーブルデータ(2129,'20120821','20120926','A'). テーブルデータ(2130,'20120821','20121019','A'). テーブルデータ(2131,'20120821','20121016','A'). テーブルデータ(2132,'20120821','20121018','A'). テーブルデータ(2133,'20120821','20120831','A'). テーブルデータ(2134,'20120821','20120918','A'). テーブルデータ(2135,'20120821','20120827','A'). テーブルデータ(2136,'20120821','20120927','A'). テーブルデータ(2137,'20120821','20121015','A'). テーブルデータ(2138,'20120821','20120924','A'). テーブルデータ(2139,'20120821','20121004','A'). テーブルデータ(2140,'20120821','20120906','A'). テーブルデータ(2141,'20120821','20120831','A'). テーブルデータ(2142,'20120821','20121005','A'). テーブルデータ(2143,'20120821','20120915','A'). テーブルデータ(2144,'20120821','20120903','A'). テーブルデータ(2145,'20120821','20120909','A'). テーブルデータ(2146,'20120821','20120901','A'). テーブルデータ(2147,'20120821','20120925','A'). テーブルデータ(2148,'20120821','20120910','A'). テーブルデータ(2149,'20120821','20120914','A'). テーブルデータ(2150,'20120822','20120907','A'). テーブルデータ(2151,'20120822','20120829','A'). テーブルデータ(2152,'20120822','20120915','A'). テーブルデータ(2153,'20120822','20120825','A'). テーブルデータ(2154,'20120822','20121011','A'). テーブルデータ(2155,'20120822','20121010','A'). テーブルデータ(2156,'20120822','20120828','A'). テーブルデータ(2157,'20120822','20120828','A'). テーブルデータ(2158,'20120822','20120901','A'). テーブルデータ(2159,'20120822','20120925','A'). テーブルデータ(2160,'20120823','20121020','A'). テーブルデータ(2161,'20120823','20120924','A'). テーブルデータ(2162,'20120823','20120831','A'). テーブルデータ(2163,'20120823','20120918','A'). テーブルデータ(2164,'20120823','20120930','A'). テーブルデータ(2165,'20120823','20121007','A'). テーブルデータ(2166,'20120824','20120828','A'). テーブルデータ(2167,'20120824','20120923','A'). テーブルデータ(2168,'20120824','20120914','A'). テーブルデータ(2169,'20120824','20120831','A'). テーブルデータ(2170,'20120824','20120831','A'). テーブルデータ(2171,'20120824','20121001','A'). テーブルデータ(2172,'20120824','20120913','A'). テーブルデータ(2173,'20120824','20120911','A'). テーブルデータ(2174,'20120824','20121012','A'). テーブルデータ(2175,'20120824','20121010','A'). テーブルデータ(2176,'20120824','20121001','A'). テーブルデータ(2177,'20120824','20120906','A'). テーブルデータ(2178,'20120824','20120912','A'). テーブルデータ(2179,'20120824','20121010','A'). テーブルデータ(2180,'20120825','20120929','A'). テーブルデータ(2181,'20120825','20121014','A'). テーブルデータ(2182,'20120825','20120827','A'). テーブルデータ(2183,'20120825','20120918','A'). テーブルデータ(2184,'20120825','20121012','A'). テーブルデータ(2185,'20120825','20120825','A'). テーブルデータ(2186,'20120825','20120920','A'). テーブルデータ(2187,'20120825','20120916','A'). テーブルデータ(2188,'20120825','20120831','A'). テーブルデータ(2189,'20120825','20120919','A'). テーブルデータ(2190,'20120825','20121010','A'). テーブルデータ(2191,'20120825','20120831','A'). テーブルデータ(2192,'20120825','20121007','A'). テーブルデータ(2193,'20120826','20121016','A'). テーブルデータ(2194,'20120826','20121022','A'). テーブルデータ(2195,'20120826','20120916','A'). テーブルデータ(2196,'20120826','20120908','A'). テーブルデータ(2197,'20120826','20120905','A'). テーブルデータ(2198,'20120826','20120923','A'). テーブルデータ(2199,'20120826','20120907','A'). テーブルデータ(2200,'20120826','20121014','A'). テーブルデータ(2201,'20120826','20121005','A'). テーブルデータ(2202,'20120826','20120926','A'). テーブルデータ(2203,'20120826','20120925','A'). テーブルデータ(2204,'20120826','20120923','A'). テーブルデータ(2205,'20120826','20120827','A'). テーブルデータ(2206,'20120826','20121001','A'). テーブルデータ(2207,'20120826','20121012','A'). テーブルデータ(2208,'20120826','20121013','A'). テーブルデータ(2209,'20120826','20121013','A'). テーブルデータ(2210,'20120826','20120917','A'). テーブルデータ(2211,'20120826','20120926','A'). テーブルデータ(2212,'20120826','20121008','A'). テーブルデータ(2213,'20120826','20121003','A'). テーブルデータ(2214,'20120826','20120914','A'). テーブルデータ(2215,'20120826','20121008','A'). テーブルデータ(2216,'20120826','20120831','A'). テーブルデータ(2217,'20120826','20120929','A'). テーブルデータ(2218,'20120827','20120918','A'). テーブルデータ(2219,'20120827','20120908','A'). テーブルデータ(2220,'20120827','20121013','A'). テーブルデータ(2221,'20120827','20121023','A'). テーブルデータ(2222,'20120827','20120925','A'). テーブルデータ(2223,'20120827','20120927','A'). テーブルデータ(2224,'20120827','20121020','A'). テーブルデータ(2225,'20120827','20121016','A'). テーブルデータ(2226,'20120827','20121010','A'). テーブルデータ(2227,'20120827','20121023','A'). テーブルデータ(2228,'20120827','20120914','A'). テーブルデータ(2229,'20120827','20121023','A'). テーブルデータ(2230,'20120828','20121025','A'). テーブルデータ(2231,'20120828','20120917','A'). テーブルデータ(2232,'20120828','20120905','A'). テーブルデータ(2233,'20120828','20120923','A'). テーブルデータ(2234,'20120828','20120918','A'). テーブルデータ(2235,'20120828','20121011','A'). テーブルデータ(2236,'20120828','20120902','A'). テーブルデータ(2237,'20120828','20120830','A'). テーブルデータ(2238,'20120828','20120922','A'). テーブルデータ(2239,'20120828','20120916','A'). テーブルデータ(2240,'20120828','20120930','A'). テーブルデータ(2241,'20120828','20120905','A'). テーブルデータ(2242,'20120828','20121025','A'). テーブルデータ(2243,'20120828','20121011','A'). テーブルデータ(2244,'20120828','20121010','A'). テーブルデータ(2245,'20120828','20121022','A'). テーブルデータ(2246,'20120828','20120907','A'). テーブルデータ(2247,'20120829','20120907','A'). テーブルデータ(2248,'20120829','20120921','A'). テーブルデータ(2249,'20120829','20120902','A'). テーブルデータ(2250,'20120829','20120904','A'). テーブルデータ(2251,'20120829','20121020','A'). テーブルデータ(2252,'20120829','20121003','A'). テーブルデータ(2253,'20120829','20121021','A'). テーブルデータ(2254,'20120829','20121010','A'). テーブルデータ(2255,'20120829','20120918','A'). テーブルデータ(2256,'20120829','20121018','A'). テーブルデータ(2257,'20120829','20120829','A'). テーブルデータ(2258,'20120829','20120907','A'). テーブルデータ(2259,'20120829','20120926','A'). テーブルデータ(2260,'20120829','20121018','A'). テーブルデータ(2261,'20120829','20120927','A'). テーブルデータ(2262,'20120829','20121004','A'). テーブルデータ(2263,'20120829','20120915','A'). テーブルデータ(2264,'20120829','20121010','A'). テーブルデータ(2265,'20120829','20120919','A'). テーブルデータ(2266,'20120829','20120912','A'). テーブルデータ(2267,'20120829','20121012','A'). テーブルデータ(2268,'20120829','20121006','A'). テーブルデータ(2269,'20120829','20121002','A'). テーブルデータ(2270,'20120829','20120907','A'). テーブルデータ(2271,'20120829','20121006','A'). テーブルデータ(2272,'20120829','20120922','A'). テーブルデータ(2273,'20120830','20120920','A'). テーブルデータ(2274,'20120830','20120918','A'). テーブルデータ(2275,'20120830','20121025','A'). テーブルデータ(2276,'20120830','20121007','A'). テーブルデータ(2277,'20120830','20120919','A'). テーブルデータ(2278,'20120830','20120918','A'). テーブルデータ(2279,'20120830','20121012','A'). テーブルデータ(2280,'20120830','20120925','A'). テーブルデータ(2281,'20120830','20120902','A'). テーブルデータ(2282,'20120830','20120917','A'). テーブルデータ(2283,'20120830','20120918','A'). テーブルデータ(2284,'20120830','20121014','A'). テーブルデータ(2285,'20120830','20120929','A'). テーブルデータ(2286,'20120830','20120831','A'). テーブルデータ(2287,'20120830','20121006','A'). テーブルデータ(2288,'20120830','20120930','A'). テーブルデータ(2289,'20120830','20120928','A'). テーブルデータ(2290,'20120830','20120927','A'). テーブルデータ(2291,'20120830','20121021','A'). テーブルデータ(2292,'20120830','20120905','A'). テーブルデータ(2293,'20120830','20121006','A'). テーブルデータ(2294,'20120830','20121004','A'). テーブルデータ(2295,'20120830','20120918','A'). テーブルデータ(2296,'20120830','20121012','A'). テーブルデータ(2297,'20120830','20120918','A'). テーブルデータ(2298,'20120831','20120917','A'). テーブルデータ(2299,'20120831','20120929','A'). テーブルデータ(2300,'20120831','20120927','A'). テーブルデータ(2301,'20120831','20121003','A'). テーブルデータ(2302,'20120831','20120915','A'). テーブルデータ(2303,'20120831','20121010','A'). テーブルデータ(2304,'20120831','20121014','A'). テーブルデータ(2305,'20120831','20120911','A'). テーブルデータ(2306,'20120831','20120919','A'). テーブルデータ(2307,'20120831','20120904','A'). テーブルデータ(2308,'20120831','20121001','A'). テーブルデータ(2309,'20120831','20121024','A'). テーブルデータ(2310,'20120831','20120923','A'). テーブルデータ(2311,'20120831','20120926','A'). テーブルデータ(2312,'20120831','20120904','A'). テーブルデータ(2313,'20120831','20121012','A'). テーブルデータ(2314,'20120831','20120912','A'). テーブルデータ(2315,'20120831','20120927','A'). テーブルデータ(2316,'20120831','20121006','A'). テーブルデータ(2317,'20120831','20121011','A'). % 以下のサイトは # 出典 :: # [1] 授業単元:プログラミング1 # [2] 問題文(含コード&リンク): # 学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)。 # なお,データは,学籍番号順に入力されるわけではない。 # このとき,試験の点数の上位11人の学籍番号と試験の点数を,点数が高い順に出力するプログラムを書け。 # ただし,同じ点数の学生がいた場合は,最初に入力されたデータを優先するものとする。 # 結果は,学籍番号と点数を1つ以上のスペースで区切り,1行に一人ずつ出力せよ。 :- dynamic(成績データ/2). 成績上位11名 :- '成績データを得る。学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)', 上位11名の選別(_上位11名の成績ならび), 上位11名を表示する(_上位11名の成績ならび). '成績データを得る。学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)' :- write('学籍番号と試験の点数のペアーを入力してください。(「0 0」を入力すると終了する) : '), length(Ln,100), 行入力(_行), 成績データを得る(Ln,_行). 成績データを得る(_,'0 0') :- !. 成績データを得る([],_). 成績データを得る([_|Ln],_行) :- '行の空白を区切り文字列として学籍番号と点数を取り出して成績データを定義して行く。点数は数に変換する。'(Ln,_行). '行の空白を区切り文字列として学籍番号と点数を取り出して成績データを定義して行く。点数は数に変換する。'(Ln,_行) :- '行の空白を区切り文字列として学籍番号と点数を取り出して行く。'(_行,_学籍番号,_点数), 成績データを定義する(_学籍番号,_点数), 行入力(_次の行), 成績データを得る(Ln,_次の行). '行の空白を区切り文字列として学籍番号と点数を取り出して行く。'(_行,_学籍番号,_点数) :- split(_行,[' '],[_学籍番号,_点数文字列]), 点数は文字列を数に変換する(_点数文字列,_点数). 点数は文字列を数に変換する(_点数文字列,_点数) :- read_term_from_atom(_点数文字列,_点数,[]). 成績データを定義する(_学籍番号,_点数) :- assertz(成績データ(_学籍番号,_点数)). 上位11名の選別(_上位11名の成績ならび) :- 成績データから降順点数ならびを得る(_降順点数ならび), 上位11名を取り出す(_降順点数ならび,_上位11名の成績ならび). 成績データから降順点数ならびを得る(_降順点数ならび) :- setof(_点数,[_学籍番号,_点数] ^ 成績データ(_学籍番号,_点数),_点数ならび), 降順に整列する(_点数ならび,_降順点数ならび). 降順に整列する(_点数ならび,_降順点数ならび) :- sort(_点数ならび,_昇順点数ならび), reverse(_点数成績ならび,_降順点数ならび). 上位11名を取り出す(_降順点数ならび,_上位11名の成績ならび) :- findnsols(11,[_学籍番号,_点数],降順点数順に学籍番号と点数を取り出す(_降順点数ならび,_学籍番号,_点数),_上位11名の成績ならび),!. 降順点数順に学籍番号と点数を取り出す(_降順点数ならび,_学籍番号,_点数) :- member(_点数,_降順点数ならび), 成績データ(_学籍番号,_点数). 上位11名を表示する(_上位11名の成績ならび) :- forall(member([_学籍番号,_点数],_上位11名の成績ならび),writef('%w \t%w\n',[_学籍番号,_点数])). 行入力(_行) :- read_line_to_codes(current_input,Codes), atom_codes(_行,Codes). split(_文字列,_区切り文字列ならび,L) :- 副文字列(_文字列,_前文字列,_区切り文字列,_後文字列), member(_区切り文字列,_区切り文字列ならび), split(_前文字列,_区切り文字列ならび,_後文字列,L),!. split(_文字列,_,[_文字列]). split('',_区切り文字列ならび,_後文字列,L) :- split(_後文字列,_区切り文字列ならび,L),!. split(_前文字列,_区切り文字列ならび,_後文字列,[_前文字列|R]) :- split(_後文字列,_区切り文字列ならび,R). 副文字列(_文字列,_前文字列,_副文字列,_後文字列) :- atom_concat(_前文字列,_残り文字列,_文字列), atom_concat(_副文字列,_後文字列,_残り文字列). % 以下のサイトは 文字列の中にある文字と度数(_文字列,_文字,_度数) :- setof(_文字,[_文字,A,B] ^ sub_atom(_文字列,A,1,B,_文字),_文字ならび), member(_文字,_文字ならび), 度数(sub_atom(_文字列,_,1,_,_文字),_度数). 度数(P,_度数) :- findall(1,P,L), length(L,_度数). % 以下のサイトは # 出典 :: SQL質疑応答スレ 9問目 #817 # [テーブルA] # ID, AGE, GROUP # --- ---- ----- # 1 , 10, A # 2 , 20, A # 3 , 30, A # 4 , 20, B # 5 , 40, B # 6 , 60, B # 7 , 10, C # 8 , 30, C # 9 , 50, C # 10 , 70, C # # ↑のテーブルから、 # 各GROUP毎にAGEで順位付けした結果を取得したいです。 # # <結果> # # ID, AGE, GROUP, RANK # --- ---- ----- ----- # 1 , 10, A 1 # 2 , 20, A 2 # 3 , 30, A 3 # 4 , 20, B 1 # 5 , 40, B 2 # 6 , 60, B 3 # 7 , 10, C 1 # 8 , 30, C 2 # 9 , 50, C 3 # 10 , 70, C 4 # # # GROUP BYを使ってみたのですが、 # どうも見当違いのSQLになってしまって。。 # # すいませんが、どのようなSQLを書けばよいかご教示ください。 # テーブルA(8,30,'C'). テーブルA(4,20,'B'). テーブルA(1,10,'A'). テーブルA(10,70,'C'). テーブルA(2,20,'A'). テーブルA(9,50,'C'). テーブルA(6,60,'B'). テーブルA(7,10,'C'). テーブルA(3,30,'A'). テーブルA(5,40,'B'). '各GROUP毎にAGEで順位付けした結果を取得'(X) :- 'GROUPならび'(_GROUPならび), '各GROUP毎にAGEで順位付けした結果を取得'(_GROUPならび,X). 'GROUPならび'(_GROUPならび) :- setof(_GROUP,[_ID,_AGE,_GROUP] ^ テーブルA(_ID,_AGE,_GROUP),_GROUPならび). '各GROUP毎にAGEで順位付けした結果を取得'([],[]) :- !. '各GROUP毎にAGEで順位付けした結果を取得'(_GROUPならび,X) :- '各GROUP毎にAGEで順位付けした結果を取得して行く'(_GROUPならび,X). '各GROUP毎にAGEで順位付けした結果を取得して行く'([_GROUP|R1],X) :- '各GROUP毎にAGEで順位付けした'(_GROUP,L4), '各GROUP毎にAGEで順位付けした結果を取得'(R1,Y), append(L4,Y,X). '各GROUP毎にAGEで順位付けした'(_GROUP,L4) :- '_GROUPのデータの_AGEを整列鍵に'(_GROUP,L2), '整列し_AGEで順位付けした'(L2,L4). '_GROUPのデータの_AGEを整列鍵に'(_GROUP,L2) :- findall([_AGE,_GROUP,_ID],テーブルA(_ID,_AGE,_GROUP),L2). '整列し_AGEで順位付けした'(L2,L4) :- 整列(L2,L3), 'GROUP内の順位づけ'(1,L3,L4). 'GROUP内の順位づけ'(_,[],[]) :- !. 'GROUP内の順位づけ'(N,[[_AGE,_GROUP,_ID]|R1],[[_ID,_AGE,_GROUP,N]|R2]) :- N2 is N + 1, 'GROUP内の順位づけ'(N2,R1,R2). 整列(L1,L2) :- 先頭要素を軸要素として重複要素を許すクイックソート(L1,L2). 先頭要素を軸要素として重複要素を許すクイックソート([],[]). 先頭要素を軸要素として重複要素を許すクイックソート([_軸要素|L1],L2) :- 軸要素に対する大小で二つのならびに分割する(_軸要素,L1,_軸要素と等しいかより小さい要素のならび,_軸要素より大きい要素のならび), 先頭要素を軸要素として重複要素を許すクイックソート(_軸要素と等しいかより小さい要素のならび,L2_1), 先頭要素を軸要素として重複要素を許すクイックソート(_軸要素より大きい要素のならび,L2_2), append(L2_1,[_軸要素|L2_2],L2). 軸要素に対する大小で二つのならびに分割する(_,[],[],[]). 軸要素に対する大小で二つのならびに分割する(_軸要素,[_要素|_残りならび],[_要素|_軸要素と等しいかより小さい要素のならび],_軸要素より大きい要素のならび) :- _軸要素 @>= _要素, 軸要素に対する大小で二つのならびに分割する(_軸要素,_残りならび,_軸要素と等しいかより小さい要素のならび,_軸要素より大きい要素のならび). 軸要素に対する大小で二つのならびに分割する(_軸要素,[_要素|_残りならび],_軸要素と等しいかより小さい要素のならび,[_要素|_軸要素より大きい要素のならび]) :- _軸要素 @< _要素, 軸要素に対する大小で二つのならびに分割する(_軸要素,_残りならび,_軸要素と等しいかより小さい要素のならび,_軸要素より大きい要素のならび). % 以下のサイトは プロジェクト(掃除,水回り). プロジェクト(掃除,キッチン). プロジェクト(掃除,リビング). プロジェクト(水回り,洗面所). プロジェクト(水回り,トイレ). プロジェクト(水回り,キッチン). プロジェクト(リビング,机の下). プロジェクト(リビング,棚の裏). プロジェクトは終了している(_プロジェクト) :- プロジェクト(_プロジェクト), 終了している(_プロジェクト). 終了している(_プロジェクト) :- プロジェクトまたは作業場所は終了している(_プロジェクト). プロジェクトまたは作業場所は終了している(_プロジェクトまたは作業場所) :- 終了(_プロジェクトまたは作業場所),!. プロジェクトまたは作業場所は終了している(_プロジェクト) :- 'プロジェクトは作業場所のことではなく、そのプロジェクトは終了している'(_プロジェクト). 'プロジェクトは作業場所のことではなく、そのプロジェクトは終了している'(_プロジェクト) :- プロジェクトは作業場所のことではなく(_プロジェクト), forall(プロジェクト(_プロジェクト,_プロジェクト_1),プロジェクトまたは作業場所は終了している(_プロジェクト_1)). プロジェクトは作業場所のことではなく(_プロジェクト) :- プロジェクト(_プロジェクト,_),!. プロジェクト(_プロジェクト) :- setof(_プロジェクト,[_プロジェクト,_2] ^ プロジェクト(_プロジェクト,_2),_プロジェクトならび), member(_プロジェクト,_プロジェクトならび). 全てのプロジェクトが完了した :- forall(プロジェクト(_プロジェクト),プロジェクトは終了している(_プロジェクト)). 終了(棚の裏). 終了(洗面所). 終了(キッチン). 終了(トイレ). % 以下のサイトは 最長反復文字列(_文字列,_最長反復文字列) :- setof([Len,_最長反復文字列], [Len,_最長反復文字列] ^ ( 最長反復文字列(_文字列,Len,_最長反復文字列)),LL), 最長反復文字列を取り出す(LL,_最長反復文字列). 最長反復文字列(_文字列,Len,_最長反復文字列) :- sub_atom(_文字列,_前文字列,_最長反復文字列,_後文字列), atom_length(_最長反復文字列,Len), sub_atom(_後文字列,0,Len,_,_最長反復文字列). 最長反復文字列を取り出す(LL,_最長反復文字列) :- findmax(N,member([N,_],LL),_最長文字数), member([_最長文字数,_最長反復文字列],LL). sub_atom(_文字列,_前文字列,_適合文字列,_後文字列) :- sub_atom(_文字列,S,_,R,_適合文字列), sub_atom(_文字列,0,S,_,_前文字列), sub_atom(_文字列,_,R,0,_後文字列). findmax(A,B,C) :- findall(A,B,L), max_list(L,C). % 以下のサイトは '父方先祖、母方先祖の集合を作り、クロスがある共通先祖の血量合計が最大である先祖を得る。'(_本人,_血量が最大である先祖) :- '父方と母方のふたつの集合を作り、'(_本人,_父方集合,_母方集合,_共通先祖ならび), 'クロスがある共通先祖の血量合計が最大である先祖を得る。'(_父方集合,_母方集合,_共通先祖ならび,_血量が最大である先祖). '父方と母方のふたつの集合を作り、'(_本人,_父方集合,_母方集合,_共通先祖ならび) :- 父方集合を得る(_本人,_父方集合), 母方集合を得る(_本人,_母方集合), 父方集合と母方集合を先祖で集約して共通先祖ならびを得る(_父方集合,_母方集合,_共通先祖ならび). 父方集合を得る(_本人,_父方_世代_先祖集合) :- 父(_本人,_父), findall([_世代,_先祖],世代を数えながら先祖を得る(_父,0,_世代,_先祖),_父方_世代_先祖集合). 母方集合を得る(_本人,_母方_世代_先祖集合) :- 母(_本人,_母), findall([_世代,_先祖],世代を数えながら先祖を得る(_母,0,_世代,_先祖),_母方_世代_先祖集合). 世代を数えながら先祖を得る(_子,_世代_1,_世代,_先祖) :- 父または母(_子,_父または母), succ(_世代_1,_世代_2), 先祖を得る(_父または母,_世代_2,_世代,_先祖). 父または母(_子,_父または母) :- 父(_子,_父). 父または母(_子,_父または母) :- 母(_子,_母). 先祖を得る(_父または母,_世代,_世代,_父または母). 先祖を得る(_父または母,_世代_2,_世代,_先祖) :- 世代を数えながら先祖を得る(_父または母,_世代_2,_世代,_先祖). 父方集合と母方集合を先祖で集約して共通先祖ならびを得る(_父方集合,_母方集合,_共通先祖ならび) :- 父方集合を先祖で集約(_父方集合,_父方先祖ならび), 母方集合を先祖で集約(_母方集合,_母方先祖ならび), intersection(_父方先祖ならび,_母方先祖ならび,_共通先祖ならび). 父方集合を先祖で集約(_父方集合,_父方先祖ならび) :- setof(_先祖,[_世代,_先祖] ^ member([_世代,_先祖],_父方集合),_父方先祖ならび). 母方集合を先祖で集約(_母方集合,_母方先祖ならび) :- setof(_先祖,[_世代,_先祖] ^ member([_世代,_先祖],_母方集合),_母方先祖ならび). 'クロスがある共通先祖の血量合計が最大である先祖を得る。'(_父方集合,_母方集合,_共通先祖ならび,_血量が最大である先祖) :- 先祖_血量ならびを得る(_共通先祖ならび,_父方集合,_母方集合,_先祖_血量ならび), 血量が最大である先祖を取り出す(_先祖_血量ならび,_血量が最大である先祖). 先祖_血量ならびを得る(_共通先祖ならび,_父方集合,_母方集合,_先祖_血量ならび) :- append(_父親集合,_母親集合,_親集合), findall([_先祖,_血量],共通先祖ならびから先祖の血量を得る(_共通先祖ならび,_親集合,_先祖,_血量),_先祖_血量ならび). 共通先祖ならびから先祖の血量を得る(_共通先祖ならび,_親集合,_先祖,_血量) :- member(_先祖,_共通先祖ならび), 血量を得る(_先祖,_親集合,_血量). 血量を得る(_先祖,_親集合,_血量) :- findsum(_血量,( 先祖が現れるごとにその部分血量を計算する(_先祖,_親集合,_血量)),_血量合計). 先祖が現れるごとにその部分血量を計算する(_先祖,_親集合,_血量) :- member([_世代,_先祖],_親集合), 血量計算(_世代,_血量). 血量計算(_世代,_血量) :- _血量 is 1 rdiv (2 ^ _世代). 血量が最大である先祖を取り出す(_先祖_血量ならび,_血量が最大である先祖) :- findmax(_血量,member([_,_血量],_先祖_血量ならび),_最大血量), member([_血量が最大である先祖,_最大血量],_先祖_血量ならび). findmax(A,P,Max) :- findall(A,P,L), max_list(L,Max). findsum(A,P,Sum) :- findall(A,P,L), sum_list(L,Sum). % 以下のサイトは # 出典 :: SQL質疑応答スレ 12問目 #984 # ・SQL Server2008R2Express # テーブルデータ # ・2012-08-01 11:35:00, りんご, 1 # ・2012-08-01 16:22:00, みかん, 2 # ・2012-08-02 13:54:00, りんご, 2 # ・2012-08-02 14:32:00, りんご, 1 # ・2012-08-04 16:22:00, みかん, 3 # # ・欲しい結果 # 2012-08-01 # 2012-08-02 # 2012-08-04 # # ・説明 # 件数に関係なく売り上げがあった日だけのリストが欲しいのですが # うまい方法あるでしょうか # # 売上('2012-08-01 11:35:00', りんご, 1 ). 売上('2012-08-01 16:22:00', みかん, 2 ). 売上('2012-08-02 13:54:00', りんご, 2 ). 売上('2012-08-02 14:32:00', りんご, 1 ). 売上('2012-08-04 16:22:00', みかん, 3 ). 件数に関係なく売り上げがあった日(_売上のあった日) :- 売上のあった日を選ぶ(_売上のあった日候補日リスト), 実際に売上のあった日(_売上のあった日候補日リスト,_売上のあった日). 売上のあった候補日を選ぶ(_売上のあった候補日リスト) :- setof(_年月日,[_年月日] ^ 売上のあった日(_年月日),_売上のあった候補日リスト). 売上のあった日(_年月日) :- 売上(_日付時刻,_,_件数), 日付時刻から年月日を切り取る(_日付時刻,_年月日). 日付時刻から年月日を切り取る(_日付時刻,_年月日) :- sub_atom(_日付時刻,0,10,_,_年月日). 実際に売上のあった日(_売上のあった日候補日リスト,_年月日) :- member(_年月日,_売上のあった日候補日リスト), 合計件数を得る(_年月日,_合計件数), _合計件数 > 0. 合計件数を得る(_年月日,_合計件数) :- findsum(_件数,売上の件数を得る(_年月日,_件数),_合計件数). 売上の件数を得る(_年月日,_件数) :- 売上(_日付時刻,_,_件数), 日付時刻から年月日を切り取る(_日付時刻,_年月日). findsum(A,B,C) :- findall(A,B,L), sum_list(L,C). % 以下のサイトは # 出題場所 :: http://peace.2ch.net/test/read.cgi/db/1402919549/310 # SQLServer2012です # 日々の売上の合計が一定額を越えた日を知るにはどうすればいいでしょうか? # # 10/1 |\100 # 10/2 |\200 # 10/3 |\300 # 10/4 |\200 # 10/5 |\400 # 10/6 |\100 # # 上記で\1000を越えた日=10/5と出したいです # 売上(10/1,100). 売上(10/2,200). 売上(10/3,300). 売上(10/4,200). 売上(10/5,400). 売上(10/6,100). '日々の売上の合計が一定額を越えた日を知る'(_一定額,_日々の売上の合計が一定額を越えた日) :- 日付を鍵とする(_日付ならび), 日々の売上の合計が一定額を越えた日(_一定額,_日付ならび,_日々の売上の合計,_日々の売上の合計が一定額を越えた日). 日付を鍵とする(_日付ならび) :- setof(_日付,[_日付,_売上] ^ 売上(_日付,_売上),_日付ならび). 日々の売上の合計が一定額を越えた日(_一定額,_日付ならび,_日々の売上の合計,_日々の売上の合計が一定額を越えた日) :- '日々の売上の合計'(_日付ならび,_日々の,_日々の売上の合計), 一定額を越えた日(_一定額,_日々の,_日々の売上の合計,_日々の売上の合計が一定額を越えた日),!. '日々の売上の合計'(_日付ならび,_日々の,_日々の売上の合計) :- 日々の(_日付ならび,_日々の), 売上の合計(_日々の,_日々の売上の合計). 日々の(_日付ならび,_日々の) :- append(_日々の,_,_日付ならび). 売上の合計(_日々の,_日々の売上の合計) :- findsum(_売上,( 日々の売上(_日々の,_売上)),_日々の売上の合計). 日々の売上(_日々の,_売上) :- member(_日付,_日々の), 売上(_日付,_売上). 一定額を越えた日(_一定額,_日々の,_日々の売上の合計,_日々の売上の合計が一定額を越えた日) :- 一定額を越えた(_一定額,_日々の売上の合計), 日(_日々の,_日々の売上の合計が一定額を越えた日). 一定額を越えた(_一定額,_日々の売上の合計) :- _日々の売上の合計 > _一定額. 日(_日々の,_日々の売上の合計が一定額を越えた日) :- last(_日々の,_日々の売上の合計が一定額を越えた日). findsum(A,P,Sum) :- findall(A,P,L), sum_list(L,Sum). % 以下のサイトは # 出典 :: Prologの宿題片付けます # <問題> # 全社員が売上を記録した日を求めよ。 これをPrologプログラムとして表現しなさい。 売上(稲葉,'20140228'). 売上(尾崎,'20140227'). 売上(稲葉,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140228'). 社員(尾崎). 社員(稲葉). 全社員が売上を記録した日を求めよ(_全社員が売上を記録した日) :- 社員ごとの売上日ならび(_社員ごとの売上日ならび), 全社員が売上を記録した日(_社員ごとの売上日ならび,_全社員が売上を記録した日). 社員ごとの売上日ならび(_社員ごとの売上日ならび) :- findall(_社員の重複のない売上日ならび,( 社員の重複のない売上日ならび(_社員の重複のない売上日ならび)),_社員ごとの売上日ならび). 社員の重複のない売上日ならび(_社員の重複のない売上日ならび) :- 社員(_社員), setof(_日,[_社員,_日] ^ 売上(_社員,_日),_社員の重複のない売上日ならび). 全社員が売上を記録した日([L],_全社員が売上を記録した日) :- ひとつに纏まったら日付を順に取り出す(L,_全社員が売上を記録した日). 全社員が売上を記録した日([L1,L2|R],_全社員が売上を記録した日) :- 売上を共通して記録した日を纏めて行く([L1,L2|R],_全社員が売上を記録した日). ひとつに纏まったら日付を順に取り出す(L,_全社員が売上を記録した日) :- member(_全社員が売上を記録した日,L). 売上を共通して記録した日を纏めて行く([L1,L2|R],_全社員が売上を記録した日) :- ふたりの共通に売上を記録した日を取り出してひとつに纏める(L1,L2,_共通に売上を記録した日ならび), 全社員が売上を記録した日([_共通に売上を記録した日ならび|R],_全社員が売上を記録した日). ふたりの共通に売上を記録した日を取り出してひとつに纏める(L1,L2,_共通に売上を記録した日ならび) :- intersection(L1,L2,_共通に売上を記録した日ならび). % 以下のサイトは # 出典 :: Prologの宿題片付けます # <問題> # 全社員が売上を記録した日を求めよ。 これをPrologプログラムとして表現しなさい。 売上(稲葉,'20140228'). 売上(尾崎,'20140227'). 売上(稲葉,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140228'). 社員(尾崎). 社員(稲葉). 全社員が売上を記録した日を求めよ(_全社員が売上を記録した日) :- 社員ごとの売上日ならび(_社員ごとの売上日ならび), ならびに共通して存在する要素(_社員ごとの売上日ならび,_全社員が売上を記録した日). 社員ごとの売上日ならび(_社員ごとの売上日ならび) :- findall(_社員の重複のない売上日ならび,( 社員の重複のない売上日ならび(_社員の重複のない売上日ならび)),_社員ごとの売上日ならび). 社員の重複のない売上日ならび(_社員の重複のない売上日ならび) :- 社員(_社員), setof(_日,[_社員,_日] ^ 売上(_社員,_日),_社員の重複のない売上日ならび). ならびに共通して存在する要素([L],_要素) :- ひとつの集合に纏まったら要素を順に取り出す(L,_要素). ならびに共通して存在する要素([L1,L2|R],_要素) :- 共通要素に纏めて行く([L1,L2|R],_要素). ひとつの集合に纏まったら要素を順に取り出す(L,_要素) :- member(_要素,L). 共通要素に纏めて行く([L1,L2|R],_要素) :- intersection(L1,L2,L3), ならびに共通して存在する要素([L3|R],_要素). % 以下のサイトは 紊紿紮茖ゅ頳(絲榊育檎,傑,茖ゅ,). 紊紿紮茖ゅ頳(罠私蘊絖,絅恰,茵水,). 紊紿紮茖ゅ頳(臂,傑,茖ゅ,). 紊紿紮茖ゅ頳(絏♂篁e,絅恰,絖,). 紊紿紮茖ゅ頳(紊ц扱綵,傑,綣茘桁,). 紊紿紮茖ゅ頳(紊ф罩f,傑,綣茘桁,). 紊紿紮茖ゅ頳(絮掩畿罔,傑,綣茘桁,). 紊紿紮茖ゅ頳(絨顙割拭,傑,罎絲絎,). 紊紿紮茖ゅ頳(薔寂幻,絅恰,綣茘桁,). 紊紿紮茖ゅ頳(腑,傑,綣茘桁,). 紊紿紮茖ゅ頳(絮掩綺後晃,傑,茵水,). 紊紿紮茖ゅ頳(絮怨,傑,茖ゅ,). 紊紿紮茖ゅ頳(羆筝水晃,傑,罎絲絎,). 紊紿紮茖ゅ頳(紊ц扱岩査,傑,茖ゅ,). 紊紿紮茖ゅ頳(絨閺茖,傑,茖ゅ,). '絅恰'. 紊紿紮茖ゅ頳('絲榊育檎 (茖ゅ)',''). 紊紿紮茖ゅ頳('罠私蘊絖 (茵水)','') :- '絅恰'. 紊紿紮茖ゅ頳('臂 (茖ゅ)',''). 紊紿紮茖ゅ頳('絏♂篁e (絖)','') :- '絅恰'. 紊紿紮茖ゅ頳('紊ц扱綵 (綣茘桁)',''). 紊紿紮茖ゅ頳('紊ф罩f (綣茘桁)',''). 紊紿紮茖ゅ頳('絮掩畿罔 (綣茘桁)',''). 紊紿紮茖ゅ頳('絨顙割拭 (罎絲絎)',''). 紊紿紮茖ゅ頳('薔寂幻 (綣茘桁)','') :- '絅恰'. 紊紿紮茖ゅ頳('腑 (綣茘桁)',''). 紊紿紮茖ゅ頳('絮掩綺後晃 (茵水)',''). 紊紿紮茖ゅ頳('絮怨 (茖ゅ)',''). 紊紿紮茖ゅ頳('羆筝水晃 (罎絲絎)',''). 紊紿紮茖ゅ頳('紊ц扱岩査 (茖ゅ)',''). 紊紿紮茖ゅ頳('絨閺茖 (茖ゅ)',''). 紊紿紮<ゆ筝眼у(_у) :- уャ冴(_у), <ゆ筝眼у(_у). уャ冴(_у) :- уャ(_уャ), 冴(_уャ,_у). уャ(_уャ) :- setof(_у,[_茖ゅ,_у,_肴昆,_ゆ] ^ 紊紿紮茖ゅ頳(_茖ゅ,_у,_肴昆,_ゆ),_уャ). 冴(_уャ,_у) :- member(_у,_уャ). <ゆ筝眼у(_у) :- <ゆ(_у,_<ゆ), 筝眼(_<ゆ,_). <ゆ(_у,_<ゆ) :- findall(_ゆ,( 紊紿紮茖ゅ頳(_,_у,_,_ゆ)),_<ゆ). 筝眼([_ゆ],_ゆ). 筝眼([_ゆ|R],_ゆ), 筝眼(R,_ゆ). ?- 紊紿紮茖ゅ頳(X,''). X = '罠私蘊絖 (茵水)'; X = '絮掩畿罔 (綣茘桁)'; X = '絏♂篁e (絖)'; X = '薔寂幻 (綣茘桁)'; false. ?- 紊紿ュ茖ゅ頳(_茖ゅ,絅恰,綣茘桁,_蚊蚊). _茖ゅ = 薔寂幻, _蚊蚊 = ; false. ?- findall(_茖ゅ,紊紿紮茖ゅ頳(_茖ゅ,_,_,),_我頳菴違鴻茖ゅ). _我頳菴違鴻茖ゅ = [絲榊育檎,臂,紊ц扱綵,紊ф罩f,絨顙割拭,絮掩綺後晃,絮怨,羆筝水晃,紊ц扱岩査,絨閺茖]. ?- 紊紿紮<ゆ筝眼у(_у) :- _у = 絅恰; false. % 以下のサイトは '差集合 A-B とは、Aの要素からBの要素を取り去った集合である'(A,B,_差集合) :- '差集合 A-B とは、Aの要素であるがBの要素ではない、そういう要素を集めた集合である'(A,B,_差集合). '差集合 A-B とは、Aの要素であるがBの要素ではない、そういう要素を集めた集合である'(A,B,_差集合) :- setof(_要素,[A,B,_要素] ^ 'Aの要素であるがBの要素ではない'(A,B,_要素),_差集合). 'Aの要素であるがBの要素ではない'(A,B,_要素) :- 'Aの要素であるが'(A,_要素), 'Bの要素ではない'(B,_要素). 'Aの要素であるが'(A,_要素) :- member(_要素,A). 'Bの要素ではない'(B,_要素) :- \+(member(_要素,B)). % 以下のサイトは '差集合 A-B とは、Aの要素からBの要素を取り去った集合である'(A,B,_差集合) :- '差集合 A-B とは、Aの要素であるがBの要素ではない、そういう要素を集めた集合である'(A,B,_差集合). '差集合 A-B とは、Aの要素であるがBの要素ではない、そういう要素を集めた集合である'(A,B,_差集合) :- setof(_要素,[A,B,_要素] ^ 'Aの要素であるがBの要素ではない'(A,B,_要素),_差集合). 'Aの要素であるがBの要素ではない'(A,B,_要素) :- 'Aの要素であるが'(A,_要素), 'Bの要素ではない'(B,_要素). 'Aの要素であるが'(A,_要素) :- member(_要素,A). 'Bの要素ではない'(B,_要素) :- \+(member(_要素,B)). % 以下のサイトは '2文字の抽出とその出現頻度を求める'(_文字列,_抽出された出現頻度付きの2文字ならび) :- '2文字の抽出と'(_文字列,_抽出された2文字ならび), その出現頻度を求める(_文字列,_抽出された2文字ならび,_抽出された出現頻度付きの2文字ならび). '2文字の抽出と'(_文字列,_抽出された2文字ならび) :- setof(_2文字,[_文字列,S,R,_2文字] ^ sub_atom(_文字列,S,2,R,_2文字),_抽出された2文字ならび). その出現頻度を求める(_文字列,_抽出された2文字ならび,_抽出された出現頻度付きの2文字ならび) :- findall([_2文字,_出現頻度],( member(_2文字,_抽出された2文字ならび), 出現頻度(sub_atom(_文字列,_,2,_,_2文字),_出現頻度)),_抽出された出現頻度付きの2文字ならび). 出現頻度(P,_出現頻度) :- findall(1,P,L), length(L,_出現頻度). % 以下のサイトは # 出典 :: 現在はリンクが切れています (レス番号110) # [1] 授業単元:プログラミング1 # [2] 問題文(含コード&リンク): # 述語 成績表は学籍番号と成績を引数として持つ。 # このとき,試験の点数の上位11人の学籍番号と試験の点数を,点数が高い順に出力するプログラムを書け。 # ただし,同じ点数の学生がいた場合は,述語の学籍番号が小さいデータを優先するものとする。 # 結果は,学籍番号と点数を1つ以上のスペースで区切り,1行に一人ずつ出力せよ。 成績上位11名 :- 降順に整列した成績鍵ならび(_降順に整列した成績鍵ならび), 上位11名を選別して表示する(_降順に整列した成績鍵ならび). 降順に整列した成績鍵ならび(_降順に整列した成績鍵ならび) :- setof(_成績,[_学籍番号,_成績] ^ 成績表(_学籍番号,_成績),_整列した成績鍵ならび), reverse(_整列した成績鍵ならび,_降順に整列した成績鍵ならび). 上位11名を選別して表示する(_降順に整列した成績鍵ならび) :- once(上位11名を選別する(_降順に整列した成績鍵ならび,_上位11名)), 上位11名を表示する(_上位11名). 上位11名を選別する(_降順に整列した成績鍵ならび,_上位11名ならび) :- findnsols(11,[_学籍番号,_成績], '降順に整列した成績鍵から_学籍番号_成績を取り出す。ただし同点の場合は学籍番号の小さい順に取り出す。'(_降順に整列した成績鍵ならび,_学籍番号,_成績),_上位11名ならび). '降順に整列した成績鍵から_学籍番号_成績を取り出す。ただし同点の場合は学籍番号の小さい順に取り出す。'(_降順に整列した成績鍵ならび,_学籍番号,_成績) :- '降順に整列した成績鍵から'(_降順整列した成績鍵ならび,_成績), '_学籍番号_成績を取り出す。ただし同点の場合は学籍番号の小さい順に取り出す。'(_成績,_学籍番号). '降順に整列した成績鍵から'(_降順整列した成績鍵ならび,_成績) :- member(_成績,_降順に整列した成績鍵ならび). '_学籍番号_成績を取り出す。ただし同点の場合は学籍番号の小さい順に取り出す。'(_成績,_学籍番号) :- setof(_学籍番号_1,[_学籍番号_1,_成績] ^ 成績表(_学籍番号_1,_成績),L), member(_学籍番号,L). 上位11名を表示する(_上位11名ならび) :- forall(member([A,B],_上位11名ならび),writef('%w %w\n',[A,B])). % 以下のサイトは # 出典:: http://chomework.sakura.ne.jp/log1/1137522945_02.html (レス番号110) # # [1] 授業単元:プログラミング1 # [2] 問題文(含コード&リンク): # 述語 成績表は学籍番号と成績を引数として持つ。 # このとき,試験の点数の上位11人の学籍番号と試験の点数を,点数が高い順に出力するプログラムを書け。 # ただし,同じ点数の学生がいた場合は,述語の学籍番号が小さいデータを優先するものとする。 # 結果は,学籍番号と点数を1つ以上のスペースで区切り,1行に一人ずつ出力せよ。 成績上位11名 :- 降順に整列した成績鍵ならび(_降順に整列した成績鍵ならび), 学籍番号を鍵に昇順に整列した成績ならび(_学籍番号を鍵に昇順に整列した成績ならび), 上位11名を選別して表示する(_降順に整列した成績鍵ならび,_学籍番号を鍵に昇順に整列した成績ならび). 降順に整列した成績鍵ならび(_降順に整列した成績鍵ならび) :- setof(_成績,[_学籍番号,_成績] ^ 成績表(_学籍番号,_成績),_整列した成績鍵ならび), reverse(_整列した成績鍵ならび,_降順に整列した成績鍵ならび). 学籍番号を鍵に昇順に整列した成績ならび(_学籍番号を鍵に昇順に整列した成績ならび) :- setof([_学籍番号,_成績],[_学籍番号,_成績] ^ 成績(_学籍番号,_成績),_学籍番号を鍵に昇順に整列した成績ならび). 上位11名を選別して表示する(_降順に整列した成績鍵ならび,_学籍番号を鍵に昇順に整列した成績ならび) :- once(上位11名を選別する(_降順に整列した成績鍵ならび,_学籍番号を鍵に昇順に整列した成績ならび,_上位11名)), 上位11名を表示する(_上位11名). 上位11名を選別する(_降順に整列した成績鍵ならび,_学籍番号を鍵に昇順に整列した成績ならび,_上位11名ならび) :- findnsols(11,[_学籍番号,_成績], '降順に整列した成績鍵から_学籍番号_成績を取り出す'(_降順に整列した成績鍵ならび,_学籍番号を鍵に昇順に整列した成績ならび,_学籍番号,_成績),_上位11名ならび). '降順に整列した成績鍵から_学籍番号_成績を取り出す'(_降順に整列した成績鍵ならび,_学籍番号を鍵に昇順に整列した成績ならび,_学籍番号,_成績) :- member(_成績,_降順に整列した成績鍵ならび), member([_学籍番号,_成績],_学籍番号を鍵に昇順に整列した成績ならび). 上位11名を表示する(_上位11名ならび) :- forall(member([A,B],_上位11名ならび),writef('%w %w\n',[A,B])). % 以下のサイトは # 出典:: http://chomework.sakura.ne.jp/log1/1137522945_02.html (レス番号110) # # [1] 授業単元:プログラミング1 # [2] 問題文(含コード&リンク): # 述語 成績表は学籍番号と成績を引数として持つ。 # このとき,試験の点数の上位11人の学籍番号と試験の点数を,点数が高い順に出力するプログラムを書け。 # ただし,同じ点数の学生がいた場合は,述語の定義位置が上位のデータを優先するものとする。 # 結果は,学籍番号と点数を1つ以上のスペースで区切り,1行に一人ずつ出力せよ。 成績上位11名 :- 降順に整列した成績鍵ならび(_降順に整列した成績鍵ならび), 上位11名を選別して表示する(_降順に整列した成績鍵ならび). 降順に整列した成績鍵ならび(_降順に整列した成績鍵ならび) :- setof(_成績,[_学籍番号,_成績] ^ 成績表(_学籍番号,_成績),_整列した成績鍵ならび), reverse(_整列した成績鍵ならび,_降順に整列した成績鍵ならび). 上位11名を選別して表示する(_降順に整列した成績鍵ならび) :- once(上位11名を選別する(_降順に整列した成績鍵ならび,_上位11名)), 上位11名を表示する(_上位11名). 上位11名を選別する(_降順に整列した成績鍵ならび,_上位11名ならび) :- findnsols(11,[_学籍番号,_成績], '降順に整列した成績鍵から_学籍番号_成績を取り出す'(_降順に整列した成績鍵ならび,_学籍番号,_成績),_上位11名ならび). '降順に整列した成績鍵から_学籍番号_成績を取り出す'(_降順に整列した成績鍵ならび,_学籍番号,_成績) :- member(_成績,_降順に整列した成績鍵ならび), 成績表(_学籍番号,_成績). 上位11名を表示する(_上位11名ならび) :- forall(member([A,B],_上位11名ならび),writef('%w %w\n',[A,B])). % 以下のサイトは # 出典:: http://chomework.sakura.ne.jp/log1/1137522945_02.html (レス番号110) # # [1] 授業単元:プログラミング1 # [2] 問題文(含コード&リンク): # 学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)。 # なお,データは,学籍番号順に入力されるわけではない。 # このとき,試験の点数の上位11人の学籍番号と試験の点数を,点数が高い順に出力するプログラムを書け。 # ただし,同じ点数の学生がいた場合は,最初に入力されたデータを優先するものとする。 # 結果は,学籍番号と点数を1つ以上のスペースで区切り,1行に一人ずつ出力せよ。 成績上位11名 :- '成績データを得る。学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)'(_成績ならび), 降順に整列した成績鍵ならび(_成績ならび,_降順に整列した成績鍵ならび), 上位11名を選別して表示する(_成績ならび,_降順に整列した成績鍵ならび). '成績データを得る。学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)'(_成績ならび) :- write('学籍番号と試験の点数のペアーを入力してください。(「0 0」を入力すると終了する) : '), once(成績データを得る(_成績ならび)). 成績データを得る(_成績ならび) :- findnsols(100,[_学籍番号,_成績],( 連続した行入力(_行), (行入力終了条件(_行),!,fail;split(_行,[' '],[_学籍番号,_成績]))),_成績ならび). 連続した行入力(_行) :- repeat, get_line(_行). 行入力終了条件('0 0'). 降順に整列した成績鍵ならび(_成績ならび,_降順に整列した成績鍵ならび) :- setof(_成績,[_学籍番号,_成績] ^ member([_学籍番号,_成績],_成績ならび),_整列した成績鍵ならび), reverse(_整列した成績鍵ならび,_降順に整列した成績鍵ならび). 上位11名を選別して表示する(_成績ならび,_降順に整列した成績鍵ならび) :- once(上位11名を選別する(_成績ならび,_降順に整列した成績鍵ならび,_上位11名)), 上位11名を表示する(_上位11名). 上位11名を選別する(_成績ならび,_降順に整列した成績鍵ならび,_上位11名ならび) :- findnsols(11,[_学籍番号,_成績], '降順に整列した成績鍵から_学籍番号_成績を登録順に取り出す'(_成績ならび,_降順に整列した成績鍵ならび,_学籍番号,_成績),_上位11名ならび). '降順に整列した成績鍵から_学籍番号_成績を登録順に取り出す'(_成績ならび,_降順に整列した成績鍵ならび,_学籍番号,_成績) :- member(_成績,_降順に整列した成績鍵ならび), member([_学籍番号,_成績],_成績ならび). 上位11名を表示する(_上位11名ならび) :- forall(member([A,B],_上位11名ならび),writef('%w %w\n',[A,B])). % 以下のサイトは # 出典:: http://chomework.sakura.ne.jp/log1/1137522945_02.html (レス番号110) # # [1] 授業単元:プログラミング1 # [2] 問題文(含コード&リンク): # 学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)。 # なお,データは,学籍番号順に入力されるわけではない。 # このとき,試験の点数の上位11人の学籍番号と試験の点数を,点数が高い順に出力するプログラムを書け。 # ただし,同じ点数の学生がいた場合は,最初に入力されたデータを優先するものとする。 # 結果は,学籍番号と点数を1つ以上のスペースで区切り,1行に一人ずつ出力せよ。 成績上位11名 :- '成績データを得る。学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)'(_成績ならび), 降順に整列した成績鍵ならび(_成績ならび,_降順に整列した成績鍵ならび), 上位11名を選別して表示する(_成績ならび,_降順に整列した成績鍵ならび). '成績データを得る。学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)'(_成績ならび) :- write('学籍番号と試験の点数のペアーを入力してください。(「0 0」を入力すると終了する) : '), get_line(_行), length(Ln,100), 成績データを得る(Ln,_行,_整列鍵ならび,_成績ならび). 成績データを得る(_,'0 0',[]) :- !. 成績データを得る([],_,[]). 成績データを得る([_|Ln],_行,[[_学籍番号,_成績]|R]) :- split(_行,[' '],[_学籍番号,_成績]), get_line(_行_2), 成績データを得る(Ln,_行_2,R). 降順に整列した成績鍵ならび(_成績ならび,_降順に整列した成績鍵ならび) :- setof(_成績,[_学籍番号,_成績] ^ member([_学籍番号,_成績],_成績ならび),_整列した成績鍵ならび), reverse(_整列した成績鍵ならび,_降順に整列した成績鍵ならび). 上位11名を選別して表示する(_成績ならび,_降順に整列した成績鍵ならび) :- 上位11名を選別する(_上位11名), 上位11名を表示する(_上位11名). 上位11名を選別する(_降順に整列した成績鍵ならび,_成績ならび,_上位11名ならび) :- once(findnsols(11,[_学籍番号,_成績], '降順に整列した成績鍵から_学籍番号_成績を登録順に取り出す'(_降順に整列した成績鍵ならび,_成績ならび,_学籍番号,_成績),_上位11名ならび)). '降順に整列した成績鍵から_学籍番号_成績を登録順に取り出す'(_降順に整列した成績鍵ならび,_成績ならび,_学籍番号,_成績) :- member(_成績,_降順に整列した成績鍵ならび), member([_学籍番号,_成績],_成績ならび). 上位11名を表示する(_上位11名ならび) :- forall(member([A,B],_上位11名ならび),writef('%w %w\n',[A,B])). % 以下のサイトは # 出典 :: Prologの宿題片付けます # <問題> # 全社員が売上を記録した日を求めよ。 これをPrologプログラムとして表現しなさい。 売上(稲葉,'20140228'). 売上(尾崎,'20140227'). 売上(稲葉,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140228'). 社員(尾崎). 社員(稲葉). 全社員が売上を記録した日を求めよ(_全社員が売上を記録した日) :- 社員ごとの売上日ならび(_社員ごとの売上日ならび), ならびに共通して存在する要素(_社員ごとの売上日ならび,_全社員が売上を記録した日). 社員ごとの売上日ならび(_社員ごとの売上日ならび) :- findall(_売上日ならび,( 社員(_社員), setof(_日,[_社員,_日] ^ 売上(_社員,_日),_売上日ならび)),_社員ごとの売上日ならび). ならびに共通して存在する要素([L],_要素) :- member(_要素,L). ならびに共通して存在する要素([L1,L2|R],_要素) :- intersection(L1,L2,L3), ならびに共通して存在する要素([L3|R],_要素). % 以下のサイトは # 出題場所 :: http://peace.2ch.net/test/read.cgi/db/1402919549/310 # SQLServer2012です # 日々の売上の合計が一定額を越えた日を知るにはどうすればいいでしょうか? # # 10/1 |\100 # 10/2 |\200 # 10/3 |\300 # 10/4 |\200 # 10/5 |\400 # 10/6 |\100 # # 上記で\1000を越えた日=10/5と出したいです # 売上(10/1,100). 売上(10/2,200). 売上(10/3,300). 売上(10/4,200). 売上(10/5,400). 売上(10/6,100). '日々の売上の合計が一定額を越えた日を知る'(_一定額,_日々の売上の合計が一定額を越えた日) :- 日付を鍵とする(_日付ならび), 日々の売上の合計が一定額を越えた日(_一定額,_日付ならび,_日々の売上の合計,_日々の売上の合計が一定額を越えた日). 日付を鍵とする(_日付ならび) :- setof(_日付,[_日付,_売上] ^ 売上(_日付,_売上),_日付ならび). 日々の売上の合計が一定額を越えた日(_一定額,_日付ならび,_日々の売上の合計,_日々の売上の合計が一定額を越えた日) :- '日々の売上の合計'(_日付ならび,_日々の,_日々の売上の合計), 一定額を越えた日(_一定額,_日々の,_日々の売上の合計,_日々の売上の合計が一定額を越えた日),!. '日々の売上の合計'(_日付ならび,_日々の,_日々の売上の合計) :- 日々の(_日付ならび,_日々の), 売上の合計(_日々の,_日々の売上の合計). 日々の(_日付ならび,_日々の) :- append(_日々の,_,_日付ならび). 売上の合計(_日々の,_日々の売上の合計) :- findsum(_売上,( 日々の売上(_日々の,_売上)),_日々の売上の合計). 日々の売上(_日々の,_売上) :- member(_日付,_日々の), 売上(_日付,_売上). 一定額を越えた日(_一定額,_日々の,_日々の売上の合計,_日々の売上の合計が一定額を越えた日) :- 一定額を越えた(_一定額,_日々の売上の合計), 日(_日々の,_日々の売上の合計が一定額を越えた日). 一定額を越えた(_一定額,_日々の売上の合計) :- _日々の売上の合計 > _一定額. 日(_日々の,_日々の売上の合計が一定額を越えた日) :- last(_日々の,_日々の売上の合計が一定額を越えた日). findsum(A,P,Sum) :- findall(A,P,L), sum_list(L,Sum). % 以下のサイトは # 出題場所 :: http://toro.2ch.net/test/read.cgi/db/1371476534/493 # SQLServer2008R2です. # テーブルデータはDATE(YYYYMMの6けたのint型),CODE(varchar型),VALUE(float型) # の3カラムからなります.各DATEの各CODEに対して過去3か月分の総和を算出したいと思います. # 元テーブル # DATE, CODE, VALUE # .... # 200101, AAA, 1 # 200102, AAA, 2 # 200103, AAA, 3 # 200104, AAA, 4 # 200101, BBB, 1 # .... # # 欲しい結果 # 200103, AAA, 6 # 200104, AAA, 9 # ....... # # 下記のようなSQLを書いたのですが,同じ結果の行が12か月分でてきます. # 何処を修正すればよろしいでしょうか?もしくは全然違うSQLでしょうか? # # SELECT A.DATE, A.CODE, SUM(B.VALUE) OVER (PARTITION BY B.DATE, B.CODE) # FROM TABLE A, TABLE B # WHERE A.CODE=B.CODE AND B.DATE>=A.DATE AND B.DATE>=(A.DATEの3か月前←計算式が長いので省略です) # ORDER BY A.DATE, A.CODE # # よろしくお願いいたします. # 'A'(200101,'AAA',1). 'A'(200102,'AAA',2). 'A'(200103,'AAA',3). 'A'(200104,'AAA',4). 'A'(200101,'BBB',1). 過去三ヶ月の集計(_過去三ヶ月の集計ならび) :- '_DATE,_CODEを鍵として、過去三ヶ月の_VALUEの集計'(_過去三ヶ月の集計ならび). '_DATE,_CODEを鍵として、過去三ヶ月の_VALUEの集計'(_過去三ヶ月の集計ならび) :- '_DATE,_CODEを鍵とする'(_DATE_CODEならび), findall([_DATE,_CODE,_集計],( '過去三ヶ月の全ての_DATE,_CODEに対して、_VALUEを集約する'(_DATE,_CODE,_DATE_CODEならび,_集計)),_過去三ヶ月の集計ならび). '_DATE,_CODEを鍵とする'(_DATE_CODEならび) :- setof([_DATE,_CODE],[_DATE,_CODE,_VALUE] ^ 'A'(_DATE,_CODE,_VALUE),_DATE_CODEならび). '過去三ヶ月の全ての_DATE,_CODEに対して、_VALUEを集約する'(_DATE,_CODE,_DATE_CODEならび,_集計) :- member([_DATE,_CODE],_DATE_CODEならび), '過去三ヶ月の_DATE,_CODEで_VAULEを集約'(_DATE,_CODE,_集計). '過去三ヶ月の_DATE,_CODEで_VAULEを集約'(_DATE,_CODE,_集計) :- '3ヶ月前の起点月'(_DATE,_3ヶ月前の起点月), findsum(_VALUE,( テーブルデータは過去三ヶ月の範囲内(_DATE,_CODE,_3ヶ月前の起点月,_VALUE)),_集計). テーブルデータは過去三ヶ月の範囲内(_DATE,_CODE,_3ヶ月前の起点月,_VALUE) :- 'A'(_DATE_1,_CODE,_VALUE), between(_3ヶ月前の起点月,_DATE,_DATE_1). '3ヶ月前の起点月'(_今月,_3ヶ月前の起点年月) :- 今月が1月から3月の範囲では前年となる(_今月,_3ヶ月前の起点年月),!. '3ヶ月前の起点月'(_今月,_3ヶ月前の起点年月) :- 今月が4月から12月の範囲では今年となる(_今月,_3ヶ月前の起点年月). 今月が1月から3月の範囲では前年となる(_今月,_3ヶ月前の起点月) :- M is _今月 mod 100, M =< 3, _3ヶ月前の起点月 is _今月 - 100 + 9. 今月が4月から12月の範囲では今年となる(_今月,_3ヶ月前の起点月) :- _3ヶ月前の起点月 is _今月 - 3. findsum(A,B,C) :- findall(A,B,L), sum_list(L,C). % 以下のサイトは # 出典 :: Prologの宿題片付けます # <問題> # 全社員が売上を記録した日を求めよ。 これをPrologプログラムとして表現しなさい。 売上(稲葉,'20140228'). 売上(尾崎,'20140227'). 売上(稲葉,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140228'). 社員(尾崎). 社員(稲葉). 全社員が売上を記録した日を求めよ(_全社員が売上を記録した日) :- 売上を記録した日(_全社員が売上を記録した日), 全社員が(_全社員が売上を記録した日). 売上を記録した日(_日) :- 売上を記録した全ての日(_日ならび), 日を取り出す(_日ならび,_日). 売上を記録した全ての日(_日ならび) :- setof(_日,[_社員,_日] ^ 売上(_社員,_日),_日ならび). 日を取り出す(_日ならび,_日) :- member(_日,_日ならび). 全社員が(_全社員が売上を記録した日) :- forall(社員(_社員),売上(_社員,_全社員が売上を記録した日)). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1272006124 # # <問題> # 全社員が売上を記録した日を求めよ。 これをPrologプログラムとして表現しなさい。 売上(稲葉,'20140228'). 売上(尾崎,'20140227'). 売上(稲葉,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140228'). 社員(尾崎). 社員(稲葉). 全社員が売上を記録した日を求めよ(_日) :- 日(_日), 全社員が売上を記録した(_日). 日(_日) :- 日ならび(_日ならび), member(_日,_日ならび). 日ならび(_日ならび) :- setof(_日,[_社員,_日] ^ 売上(_社員,_日),_日ならび). 全社員が売上を記録した(_日) :- forall(社員(_社員),売上(_社員,_日)). % 以下のサイトは # お題: # 例:数列[3,1,-7,1,5]について、 # ->[4,-3,-2,3] (累計) # ->12 (絶対値の合計) # のように計算する。 # 最初の数列の並び順を変えると、最後の合計計も変わる。 # 任意数列について、上記合計が最小になるように並び替える関数を作成 '例:数列[3,1,-7,1,5]について、 ->[4,-3,-2,3] (累計) ->12 (絶対値の合計) のように計算する。 任意数列について、上記合計が最小になるように並び替える'(_数列,_最小となる数列) :- 絶対値の合計が最小になるように並び替える(_数列,_,_最小となる数列). 絶対値の合計が最小になるように並び替える(_数列,_最小の絶対値,_絶対値の合計が最小となる数列):- length(_数列,_要素数), setof([_絶対値の合計,_順列], [_数列,_要素数,_順列,_絶対値の合計] ^ 並べ替える(_数列,_要素数,_順列,_絶対値の合計),_絶対値_数列ならび), 絶対値の合計が最小となる数列を得る(_絶対値_数列ならび,_最小の絶対値,_絶対値の合計が最小となる数列). 並べ替える(_数列,_要素数,_順列,_絶対値の合計):- 順列(_数列,_要素数,_順列), 絶対値の合計(_順列,_絶対値の合計). 絶対値の合計が最小となる数列を得る(_絶対値_数列ならび,_最小の絶対値,_絶対値の合計が最小となる数列) :- findmin(_絶対値,( member([_絶対値,_],_絶対値_数列ならび)),_最小の絶対値), member([_最小の絶対値,_絶対値の合計が最小となる数列],_絶対値_数列ならび). 絶対値の合計([_値],_絶対値の合計) :- _絶対値の合計 is abs(_値). 絶対値の合計(_値ならび,_絶対値の合計) :- 累計の途中経過得ながらそれを縮退して行って絶対値を得る(_値ならび,_絶対値の合計). 累計の途中経過得ながらそれを縮退して行って絶対値を得る(_値ならび,_絶対値の合計) :- 累計の途中経過を得る(_値ならび,_累計の途中経過ならび), 要素の絶対値の合計(_累計の途中経過ならび,_絶対値の合計). 累計の途中経過を得る([_],[]). 累計の途中経過を得る([_数_1,_数_2|R1],[_累計の途中経過|R2]) :- _累計の途中経過 is _数_1 + _数_2, 累計の途中経過を得る([_累計の途中経過|R1],R2). 要素の絶対値の合計(_累計の途中経過ならび,_絶対値の合計) :- findsum(_絶対値,( member(_値,_累計の途中経過ならび), _絶対値 is abs(_値)),_絶対値の合計). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 順列(_,0,[]). 順列(L1,N,[A|R]) :- select(A,L1,R1), N_1 is N - 1, 順列(R1,N_1,R). findmin(V,P,Min) :- findall(V,P,L), min_list(L,Min). findsum(V,P,Sum) :- findall(V,P,L), sum_list(L,Sum). % 以下のサイトは # @TakaoOzaki リプありがとうございます。 # XはYの兄弟(姉妹や兄妹なども含む)である。というものを作りたいのですが、 # 兄弟(X,Y):=親(Z,X),親(Z,Y).とすると # 兄弟(私,X).としたときにX=私と解が出てしまいどうすればいいか # 試行錯誤していたところです。 親(道隆,伊周). 親(道隆,定子). 親(貴子,伊周). 親(貴子,定子). 私は誰でしょう(定子). 兄弟(私,Y) :- 私の兄弟を得る(Y). 兄弟(X,Y) :- 兄弟の組を得る(X,Y). 私の兄弟を得る(Y) :- 私は誰でしょう(_私), 兄弟(_私,Y). 兄弟の組を得る(X,Y) :- setof([X,Y],[X,Y] ^ 親が共通の人が兄弟である(X,Y),LL), member([X,Y],LL). 親が共通の人が兄弟である(X,Y) :- 親(_親,X), 親(_親,Y), 自分自身は兄弟ではない(X,Y). 自分自身は兄弟ではない(X,Y) :- \+(X == Y). % ?- 兄弟(私,Y). % % Y = '伊周'; % false. % % ?- % 以下のサイトは # SQL質疑応答スレ 11問目 #730 # MySQLで、以下のような2つのテーブルがあり、parent_idはparentの外部キーとなってます。 # # parent # id p_value # 1 AAA # 2 BBB # # children # parent_id c_value # 1 aaa # 1 bbb # 1 ccc # 2 ddd # 2 eee # # これを # # parent_id p_value c_value # 1 AAA (aaa, bbb, ccc) # 2 BBB (ddd, eee) # # のような形で取り出すことはできますか? # GROUP BYでparent_idでまとめることはできたのですが、c_valueをまとめて取り出す方法がわかりません。 # # parent(1,'AAA'). parent(2,'BBB'). children(1,aaa). children(1,bbb). children(1,ccc). children(2,ddd). children(2,eee). 結合情報を一行に纏める(_parent_id,_p_value,_c_valueならび) :- 'parentから鍵_parent_idならびを得る'(_parent_idならび), '鍵によって結合してparentからp_valueをchildrenからc_valueならびを得る'(_parent_id,_pvalue,_c_valueならび). 'parentから鍵_parent_idならびを得る'(_parent_idならび) :- setof(_parent_id,( [_parent_id,_p_value] ^ parent(_parent_id,_p_value)),_parent_idならび), '鍵によって結合してparentからp_valueをchildrenからc_valueならびを得る'(_parent_id,_pvalue,_c_valueならび) :- member(_parent_id,_parent_idならび), parentからp_valueをchildrenからc_valueならびを得る(_parent_id,_p_value,_c_valueならび). parentからp_valueをchildrenからc_valueならびを得る(_parent_id,_p_value,_c_valueならび) :- parentからp_valueを(_parent_id,_p_value), childrenからc_valueならびを得る(_parent_id,_c_valueならび). parentからp_valueを(_parent_id,_p_value) :- parent(_parent_id,_p_value). childrenからc_valueならびを得る(_parent_id,_c_valueならび) :- findall(_c_value,( children(_parent_id,_c_value)),_c_valueならび). % 以下のサイトは # 出典 :: SQL質疑応答スレ 12問目 #365 # ・DB名:Firebird1.03 # ・テーブル #  ■メイン #   受注番号 受注日 注文社 #   11    2011/12/20 A社 #   12    2011/12/21 B社 #  ■サブ #   連番 受注番号 商品コード 数 #   50  11    A10    100 #   51  11    C30    20 #   52  12    A10    10 #  ■商品 #   商品コード 商品名 カテゴリ 納品番号(商品ごとで重複していません) #   A10     コート 洋服   100 #   C30     帯   和服   504 # # メインの受注番号とサブの受注番号、サブの商品コードと商品の商品コードで # リンクしています。 # # 欲しい結果 # 受注日の期間(いつからいつまで)と、商品のカテゴリと納品番号で、 # 受注の全内容(商品)が知りたいです。 # 受注日:2011/12/01から12/31まで # カテゴリ:洋服 納品番号:100で検索をして # # 受注番号 受注日 注文者 商品コード 商品名 数量 # 11    2011/12/20 A社 A10    コート 100 # 11    2011/12/20 A社 C30    帯   20----★ # 12    2011/12/21 B社 A10    コート 10 # ★受注の全内容が知りたいので、該当する受注番号のサブはすべて表示 # したい。メインの内容は重複表示となります。 # # 丸投げですみませんが、どなたかSQL文をお願いできませんでしょうか。 # テーブルが3つになるとどうしてよいものかわからないです。 # よろしくお願いします。 # # # メイン(11,2011/12/20,'A社'). メイン(12,2011/12/21,'B社'). サブ(50,11,'A10',100). サブ(51,11,'C30',20). サブ(52,12,'A10',10). 商品('A10',コート,洋服,100). 商品('C30',帯,和服,504). '受注日の期間(いつからいつまで)と、商品の商品カテゴリと納品番号で、受注の全内容(商品)が知りたい'(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号) :- '受注番号候補を得て、それを鍵に、データベースから選択する'(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,LL1), 受注番号順に表示する(LL1). '受注番号候補を得て、それを鍵に、データベースから選択する'(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,LL1) :- 受注番号候補を得る(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,_受注番号ならび), 'それを鍵に、データベースから選択する'(_受注番号ならび,LL1). 受注番号候補を得る(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,_受注番号ならび) :- setof(_受注番号, [_受注番号,_受注日,_注文社,_受注日,_受注日下限,_受注日上限,_連番,_受注番号,_商品コード,_数量,_商品名,_商品カテゴリ,_納品番号] ^ ( '受注日範囲のメインの受注番号からサブ・商品を結合可能な受注番号'(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,_受注番号)),_受注番号ならび). '受注日範囲のメインの受注番号からサブ・商品を結合可能な受注番号'(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号,_受注番号) :- 受注日範囲のメインの受注番号から(_受注日下限,_受注日上限,_受注番号,_受注日,_注文社), 'サブ・商品を結合可能な受注番号'(_受注番号,_受注日,_注文社,_連番,_受注番号,_商品コード,_数量,_商品名,_商品カテゴリ,_納品番号). 受注日範囲のメインの受注番号から(_受注日下限,_受注日上限,_受注番号,_受注日,_注文社) :- メイン(_受注番号,_受注日,_注文社), _受注日 @>= _受注日下限, _受注日 @=< _受注日上限. 'サブ・商品を結合可能な受注番号'(_受注番号,_受注日,_注文社,_連番,_受注番号,_商品コード,_数量,_商品名,_商品カテゴリ,_納品番号) :- サブ(_連番,_受注番号,_商品コード,_数量), 商品(_商品コード,_商品名,_商品カテゴリ,_納品番号). 'それを鍵に、データベースから選択する'(_受注番号ならび,LL1) :- findall([_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量],( append(_,[_受注番号|_],_受注番号ならび), 受注番号を鍵にデータベースからの選択(_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量)),LL1). 受注番号を鍵にデータベースを結合(_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量) :- メイン(_受注番号,_受注日,_注文社), サブ(_連番,_受注番号,_商品コード,_数量), 商品(_商品コード,_商品名,_商品カテゴリ,_納品番号). 受注番号順に表示する(LL1) :- 整列(LL1,LL2), 表示する(LL2). 表示する(LL) :- 見出しを表示する, forall(append(_,[[_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量]|_],LL), writef('%10l %8l %8c %8c %8c %14l %8r\n',[_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量])). 見出しを表示する :- write('受注番号 受注日 注文者 商品コード 商品名 数量\n'). % 以下のサイトは 'コールユーブンゲン No.45 a) の階名'(['ミ-1','ミ-1','ド-1','ソ-1','ファ-1','ミ-1','ファ-1','レ-1','ラ-1','ソ-1','ファ-1','ソ-1','ミ-1','シ-1','ド-2','ファ-1','ラ-1','レ-1','ファ-1','シ-0','ソ-1','ファ-1','ミ-1','ド-1','ソ-1','ファ-1','ミ-1','ラ-1','ファ-1','ド-2','シ-1','ラ-1','ソ-1','ド-2','ミ-1','ラ-1','レ-1','ファ-1','シ-0','レ-1','ソ-1','ド-1','ミ-1','ド-2','シ-1','ラ-1','ド-2','ラ-1','シ-1','ミ-1','シ-1','ド-2','シ-1','ラ-1','ソ-1','ファ-1','ラ-1','ファ-1','ソ-1','ド-1','ソ-1','ラ-1','シ-1','ド-2','ソ-1','レ-2','シ-1','ド-2','ラ-1','ド-2','ラ-1','シ-1','ラ-1','ミ-1','レ-1','ラ-1','ソ-1','ラ-1','ファ-1','ミ-1','ソ-1','ド-1','ド-1','レ-1','ミ-1','ファ-1','ソ-1','ラ-1','ファ-1','ド-2','ラ-1','ソ-1','ファ-1','ラ-1','レ-1','レ-1','ミ-1','ファ-1','ソ-1','ラ-1','シ-1','ソ-1','レ-2','ド-2','シ-1','ド-2','ミ-1','シ-1','ド-2','シ-1','ラ-1','ド-1','ソ-1','ラ-1','ソ-1','ファ-1','ラ-1','ミ-1','ファ-1','ド-1','レ-1','シ-0','レ-1','ソ-1','ド-1']). 'この練習曲がコールユーブンゲンの代表曲だという根拠として、音程の出現数が最も多いことが挙げられる。それではそのことを示す資料を作っておくことにしよう。' :- 'コールユーブンゲン No.45 a) の音程出現表'. 'コールユーブンゲン No.45 a) の音程出現表' :- forall(('コールユーブンゲン No.45 a) に出現する音程とその出現数'(A,B,_出現数),_出現数 > 0), writef('%t,%t,%t\n',[A,B,_出現数])). 'コールユーブンゲン No.45 a) に出現する音程とその出現数'(A,B,_出現数) :- 'コールユーブンゲン No.45 a) に出現する音程と'(L,A,B), その出現数(L,A,B,_出現数). 'コールユーブンゲン No.45 a) に出現する音程と'(L,A,B) :- 'コールユーブンゲン No.45 a) の階名'(L), setof(A,member(A,L),L2), 順列(L2,2,[A,B]). その出現数(L,A,B,_出現数) :- 度数(append(_,[A,B|_],L),_出現数). 順列(Y,0,[]). 順列(Y,N,[A|X]) :- select(A,Y,Z), M is N - 1, 順列(Z,M,X). 度数(_目標,_度数) :- findall(1,_目標,L), length(L,_度数). % 以下のサイトは # 出典 :: わかりやすい Javaによる医療言語処理入門 p62-65 # # n-gram :: 文字列から文字の出現確率を求める。 # 'n-gram'(_文字列,_文字,_出現確率) :- 文字の出現頻度の総数を求める(_文字列,_文字の出現頻度の総数), 文字の出現頻度(_文字列,_文字,_文字の出現頻度), _出現確率 is _文字の出現頻度 / _文字の出現頻度の総数. 文字の出現頻度の総数を求める(_文字列,_文字の出現頻度の総数) :- sub_atom(_文字列,_,_文字の出現頻度の総数,_,_文字列). 文字の出現頻度(_文字列,_文字,_文字の出現頻度) :- 重複なく文字を取り出す(_文字列,_文字), 頻度(文字を取り出す(_文字列,_文字),_文字の出現頻度). 重複なく文字を取り出す(_文字列,_文字) :- 文字の集合(_文字列,_文字の集合), member(_文字,_文字の集合). 文字の集合(_文字列,_文字の集合) :- setof(C,(A,B,C) ^ sub_atom(_文字列,A,1,B,C),_文字の集合). 文字を取り出す(_文字列,_文字) :- sub_atom(_文字列,_,1,_,_文字). 頻度(P,_頻度) :- findall(1,P,L), length(L,_頻度). % 以下のサイトは # 出典 :: わかりやすい Javaによる医療言語処理入門 p60-61 # 文字列から二文字の出現頻度を求める。 # 二文字の出現頻度(_文字列,_二文字,_二文字の出現頻度) :- 重複なく二文字を取り出す(文字列,_二文字), 頻度(二文字を取り出す(_文字列,_二文字),_二文字の出現頻度). 重複なく二文字を取り出す(_文字列,_二文字) :- 二文字の集合(_文字列,_二文字の集合), member(_二文字,_二文字の集合). 二文字の集合(_文字列,_二文字の集合) :- setof(C_2,(A,B,C_2) ^ sub_atom(_文字列,A,2,B,C_2),_二文字の集合). 二文字を取り出す(_文字列,_二文字) :- sub_atom(_文字列,_,2,_,_二文字). 頻度(P,_頻度) :- findall(1,P,L), length(L,_頻度). % 以下のサイトは 成績(尾崎,前期,国語,30). 成績(尾崎,前期,社会,40). 成績(山崎,前期,国語,20). 成績(山崎,前期,社会,50). 成績(尾崎,後期,国語,50). 成績(山崎,後期,国語,40). 集約合計を得る(_目標,_集約対象項,_集約鍵ならび,_集約値) :- 鍵となる値ならび(_集約鍵ならび,_目標,_鍵となる値ならび), 集約する鍵値毎に合計を得る(_目標,_集約対象項,_鍵となる値ならび,_集約鍵ならび,_集約値). 集約する鍵値毎に合計を得る(_目標,_集約対象項,_鍵となる値ならび,_集約鍵ならび,_集約値) :- member(_集約鍵ならび,_鍵となる値ならび), 対象項の合計をとる(_集約対象項,_目標,_集約値). 対象項の合計をとる(_対象項,_目標,_合計) :- findall(_対象項,_目標,L), 合計をとる(L,_合計). 鍵となる値ならび(_集約鍵ならび,_目標,_鍵となる値ならび) :- term_variables(_目標,_全ての変数ならび), setof(_集約鍵ならび,_全ての変数ならび ^ _目標,_鍵となる値ならび). % 実行例 合計をとる(L,_合計) :- 'Lが数値ならび場合、sum_listで合計を得る'(L,_合計). 合計をとる(L,_合計ならび) :- 'Lの要素がならびの場合、ならび要素ごとの合計ならびを得る'(L,_合計ならび). 'Lが数値ならび場合、sum_listで合計を得る'([],0). 'Lが数値ならび場合、sum_listで合計を得る'([A|R],_合計) :- number(A), sum_list([A|R],_合計). 'Lの要素がならびの場合、ならび要素ごとの合計ならびを得る'(L,_合計ならび) :- 'Lの要素がならびの場合'(L), ならび要素ごとの合計ならびを得る(L,_合計ならび). 'Lの要素がならびの場合'(L) :- L = [L1|R], is_list(L1). ならび要素ごとの合計ならびを得る(LL,_合計ならび) :- 転置(LL,LL2), '転置されたLL2の各要素をsum_listしたならびを得る'(LL2,_合計ならび). '転置されたLL2の各要素をsum_listしたならびを得る'(LL2,_合計ならび) :- findall(_合計,( member(L,LL2), sum_list(L,_合計)),_合計ならび). 転置([],[],[]):- !. 転置([[A|R1]|R2],[R1|R3],[A|R4]):- 転置(R2,R3,R4). 転置([[]|_],[]):- !. 転置(L,[L1|R2]):- 転置(L,L2,L1), 転置(L2,R2). % 以下のサイトは # 出典 :: CodeIQ q1385 言語不問:通分と約分を実装しよう # # 小学生が分数を学ぶときに、最初に躓くのが「通分」です。 # # 分母の異なる分数の足し算や引き算を行うとき、先に通分を行っておく必要があります。 # # また、計算した結果、「約分」できる場合は、可能な限り簡単な分数にしないと正解になりません。 # # 【問題】 # # では、入力される二つの分数について足し算を行った時に、 # # 正しい答えを出力するプログラムを作り、 # # 問1〜問5の標準入力に対して、出力内容を答えてください。 # # ※分母が1の時には整数として出力してください。 # # ■例 # # 例1) # # 【標準入力】 # # 5/6 # # 1/10 # # 【標準出力】 # # 14/15 # # 例2) # # 【標準入力】 # # 1/3 # # 2/3 # # 【標準出力】 # # 1 # # ■問1〜5 # # 問1) # # 1/3 # # 2/7 # # 問2) # # 2/8 # # 3/5 # # 問3) # # 3/10 # # 1/6 # # 問4) # # 3/4 # # 5/8 # # 問5) # # 2/5 # # 2/3 # # 【解答方法】 # # 解答用テキストファイルanswer_q1385.txtをダウンロードし、必要事項をご記入ください。 # # 必須事項がすべて記入されていることをご確認いただいた後、テキストファイルのままアップロードしてください。 # # 【注意】 # # ・ご提出いただいたプログラムは個別に実行テストを行いますので、 # #  解答用テキストファイルに書かれた解答が正解していても最高評価になるとは限りません。 # # ・プログラミング言語は不問ですが、古すぎる実行環境・特殊な設備を要する実行環境では採点できない場合がございます。 # # ・使用する言語は1解答につき必ず1種類でお願いします。 # #  どうしても複数の言語を用いる場合は、解答に「メインの言語名」を明記してください。 # '問1〜問5の標準入力に対して、出力内容を答えてください。 ■問1〜5 問1) 1/3 2/7 問2) 2/8 3/5 問3) 3/10 1/6 問4) 3/4 5/8 問5) 2/5 2/3' :- between(1,5,N), '入力される二つの分数について足し算を行った時に、正しい答えを出力する', N = 5. '入力される二つの分数について足し算を行った時に、正しい答えを出力する' :- 入力される二つの分数(_分子_1 / _分母_1,_分子_2 / _分母_2), 分数の加算(_分子_1 / _分母_1,_分子_2 / _分母_2,_加算された分子 / _加算された分母), 約分(_加算された分子 / _加算された分母,_約分された分子 / _約分された分母), 答えを出力する(_約分された分子 / _約分された分母). 分数の加算(_分子_1 / _分母_1,_分子_2 / _分母_2,_加算された分子 / _通分された分母) :- 通分(_分子_1 / _分母_1,_分子_2 / _分母_2,_通分された分子_1 / _通分された分母,_通分された分子_2 / _通分された分母), _加算された分子 is _通分された分子_1 + _通分された分子_2,!. 入力される二つの分数(_分子_1 / _分母_1,_分子_2 / _分母_2) :- 入力される分数(_分子_1 / _分母_1), 入力される分数(_分子_2 / _分母_2). 入力される分数(_分子 / _分母) :- 行入力(_行), read_term_from_atom(_行,_分子 / _分母,[]). 行入力(_行) :- get_char(_先読み文字), 行ならびを得る(_先読み文字,_行ならび), atom_chars(_行,_行ならび). 行ならびを得る('\n',[]) :- !. 行ならびを得る(_先読み文字,[_先読み文字|R]) :- get_char(_次の文字), 行ならびを得る(_次の文字,R). 答えを出力する(_約分された分子 / _約分された分母) :- writef('%t\n',[_約分された分子 / _約分された分母]). 約分(_分子 / _分母,X) :- 最大公約数で分子分母を割って約分する(_分子,_分母,_分子_1,_分母_1), 負数の場合のマイナス符号は分子側に付ける(_分子_1,_分母_1,_分子_2,_分母_2), 分母が1の時は整数に変形(_分子_2,_分母_2,X). 最大公約数で分子分母を割って約分する(_分子_1,_分母_1,_分子,_分母) :- 最大公約数(_分子_1,_分母_1,_最大公約数), _分子 is _分子_1 // _最大公約数, _分母 is _分母_1 // _最大公約数. 負数の場合のマイナス符号は分子側に付ける(_分子_1,_分母_1,_分子,_分母) :- 分母が負数だったら分子分母ともに符号を反転する(_分子_1,_分母_1,_分子,_分母),!. 負数の場合のマイナス符号は分子側に付ける(_分子,_分母,_分子,_分母). 分母が負数だったら分子分母ともに符号を反転する(_分子_1,_分母_1,_分子,_分母) :- _分母_1 =< 0, _分子 is _分子_1 * -1, _分母 is _分母_1 * -1. 分母が1の時は整数に変形(_分子,1,_分子) :- !. 分母が1の時は整数に変形(_分子,1.0,_分子) :- !. 分母が1の時は整数に変形(_分子,_分母,_分子 / _分母). 通分(_分子_1 / _分母_1,_分子_2 / _分母_2,_通分された分子_1 / _最小公倍数,_通分された分子_2 / _最小公倍数) :- 最小公倍数([_分母_1,_分母_2],_最小公倍数), _通分された分子_1 is _分子_1 * (_最小公倍数 // _分母_1), _通分された分子_2 is _分子_2 * (_最小公倍数 // _分母_2). 最大公約数([_整数],_整数). 最大公約数([_整数|R],_最大公約数) :- 最大公約数(R,_最大公約数_2), 二つの整数の最大公約数(_整数,_最大公約数_2,_最大公約数). 二つの整数の最大公約数(M,N,X) :- 二つの整数の絶対値をとる(M,N,M_2,N_2), 最大公約数をユークリッドの互除法で求める(M_2,N_2,Y), 負数解の可能性も探る(M,M_2,N,N_2,Y,X). 負数解の可能性も探る(M,M_2,N,N_2,Y,X) :- setof(X,[M,M_2,N,N_2,Y,X] ^ 負数解の可能性(M,M_2,N,N_2,Y,X),L), member(X,L). 負数解の可能性(M,M_2,_,_,Y,X) :- X is Y * (M // M_2). 負数解の可能性(_,_,N,N_2,Y,X) :- X is Y * (N // N_2). 二つの整数の絶対値をとる(M,N,M_2,N_2) :- M_2 is abs(M), N_2 is abs(N). 最大公約数をユークリッドの互除法で求める(M,N,N) :- 0 is M mod N,!. 最大公約数をユークリッドの互除法で求める(M,N,X) :- Mod is M mod N, 最大公約数をユークリッドの互除法で求める(N,Mod,X). 最小公倍数(_整数_1,_整数_2,_最小公倍数) :- 二つの整数の最小公倍数(_整数_1,_整数_2,_最小公倍数). 最小公倍数(_整数ならび,_最小公倍数) :- '最小公倍数とは、0ではない複数の整数の公倍数のうち最小のものをさす'(_整数ならび,_最小公倍数). '最小公倍数とは、0ではない複数の整数の公倍数のうち最小のものをさす'([_整数],_整数). '最小公倍数とは、0ではない複数の整数の公倍数のうち最小のものをさす'([_整数|R],_最小公倍数) :- '最小公倍数とは、0ではない複数の整数の公倍数のうち最小のものをさす'(R,_最小公倍数_1), 二つの整数の最小公倍数(_整数,_最小公倍数_1,_最小公倍数). 二つの整数の最小公倍数(A,B,X) :- 二つの整数の最大公約数(A,B,_最大公約数), X is A * B // _最大公約数. % 以下のサイトは 親(為義). 親(頼朝). 親(範頼). 子(頼朝). 子(範頼). 子(公暁). 親子テーブル候補(_親子テーブル候補) :- 属性集合である親と子の直積上の部分集合候補(_親子テーブル候補). 属性集合である親と子の直積上の部分集合候補(_親子テーブル候補) :- 属性集合である親と子の直積上の(_属性集合_親_と_属性集合_子の直積), 部分集合候補(_属性集合_親_と_属性集合_子の直積,_親子テーブル候補). 属性集合である親と子の直積上の(_親と子の直積) :- 属性集合_親(_属性集合_親), 属性集合_子(_属性集合_子), 直積([_属性集合_親,_属性集合_子],_親と子の直積). 属性集合_親(_属性集合_親) :- setof(_親,親(_親),_属性集合_親). 属性集合_子(_属性集合_子) :- setof(_子,子(_子),_属性集合_子). 直積(_集合ならび,_直積集合) :- member項の生成(_集合ならび,_member項,_要素変数ならび), findall(_要素変数ならび,_member項,_直積集合). member項の生成([_集合],member(_要素変数,_集合),[_要素変数]). member項の生成([_集合|R1],(member(_要素変数,_集合),U),[_要素変数|R2]) :- member項の生成(R1,U,R2). 冪集合(_集合,_冪集合) :- findall(L,部分集合(_集合,L),_冪集合). 部分集合(_,[]). 部分集合(A,B) :- length(A,C), between(1,C,D), 組合せ(A,D,B) . 組合せ(X,1,[A]) :- member(A,X). 組合せ([A|Y],N,[A|X]) :- N > 1, M is N - 1, 組合せ(Y,M,X). 組合せ([_|Y],N,A) :- N > 1, 組合せ(Y,N,A). 部分集合候補(_属性集合_親_と_属性集合_子の直積,_親子テーブル候補) :- 冪集合(_属性集合_親_と_属性集合_子の直積,_冪集合), member(_親子テーブル候補,_冪集合). % 以下のサイトは 親(為義). 親(頼朝). 親(載家). 子(頼朝). 子(載家). 属性集合である親と子の直積上の部分集合候補(_親子テーブル候補) :- 属性集合親(_属性集合親), 属性集合子(_属性集合子), 直積(_属性集合親,_属性集合子,_親と子の直積), member(_直積上の部分集合の組,_親と子の直積), 冪集合(_親と子の直積,_冪集合), member(_親子テーブル候補,_冪集合). 属性集合親(_属性集合親) :- setof(_親,親(_親),_属性集合親). 属性集合子(_属性集合子) :- setof(_子,子(_子),_属性集合子). 直積(L1,L2,LL) :- findall([A,B],( member(A,L1), member(B,L2)),LL). '冪集合'(_集合,_冪集合) :- findall(L,部分集合(_集合,L),_冪集合). '部分集合'(_,[]). '部分集合'(A,B) :- length(A,C), between(1,C,D), 組合せ(A,D,B) . 組合せ(X,1,[A]) :- member(A,X). 組合せ([A|Y],N,[A|X]) :- N > 1, M is N - 1, 組合せ(Y,M,X). 組合せ([_|Y],N,A) :- N > 1, 組合せ(Y,N,A). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1295436346/173 # # 質問させてください # selectしたデータを一部だけ別のテーブルに入れる方法ってありますか? # # 例:insert into table2 (aaa,bbb,ccc) select aaa as aaa,bbb as bbb,ccc as ccc from table1 # この場合table1のデータがすべてtable2に入るのでaaaだけ別のデータを入れたいと思っています。 # よろしくお願いします。 # # 海に接していない都道府県名([栃木県,群馬県,埼玉県,山梨県,長野県,岐阜県,滋賀県,奈良県]). table1(奈良県,1000,aa). table1(埼玉県,2000,ab). selectしたデータを一部だけ別のテーブルに入れる方法 :- 海に接していない都道府県名(_海に接していない都道府県名ならび), table1(_都道府県名の一,_bbb,_ccc), 新しい都道府県名の生成(_海に接していない都道府県名ならび,_都道府県名の一,_都道府県名の二), assertz(table2(_都道府県名の二,_bbb,_ccc)), fail. selectしたデータを一部だけ別のテーブルに入れる方法. 新しい都道府県名の生成(_海に接していない都道府県名ならび,_都道府県名の一,_都道府県名の二) :- M is (random mod 8) + 1, list_nth(M,_海に接していない道府県名ならび,_都道府県名の二), \+(_都道府県名の一 = _都道府県名の二), \+(table2(_都道府県名の二,_,_)). 新しい都道府県名の生成(_海に接していない都道府県名ならび,_都道府県名の一,_都道府県名の二) :- 新しい都道府県名の生成(_海に接していない都道府県名ならび,_都道府県名の一,_都道府県名の二). ?- 'a##'. # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/584 # # MySQL 5.5.19 . 長くなりますので # テーブルの定義・内容と欲しい結果はここに # http://ime.nu/codepad.org/oe1jhVrF # # で、 # # create table a_tbl( # code int(9) not null, # input_date date not null, # data1 double(9,2) unsigned default 0 not null, # data2 double(9,2) unsigned default 0 not null, # primary key(code,input_date) # ) ; # # insert into a_tbl # values # (1111,'2012-02-01',10,12), # (1111,'2012-02-02',133,14), # (1111,'2012-02-04',13,15), # (1111,'2012-02-06',13,10); # # create table b_tbl( # code varchar(10) not null, # input_date date not null, # data1 double(9,2) unsigned default 0 not null, # data2 double(9,2) unsigned default 0 not null, # primary key(code,input_date) # ) ; # # insert into b_tbl # values # ('ddd','2012-02-01',122,13), # ('ddd','2012-02-03',127,18), # ('ddd','2012-02-04',11,14), # ('ddd','2012-02-05',16,95), # ('ddd','2012-02-06',13,10); # # 欲しい結果 # input_date a.data1 a.data2 b.data2 # 2012-02-01 10 12 13 # 2012-02-02 133 14 null # 2012-02-03 null null 18 # 2012-02-04 13 15 14 # 2012-02-05 null null 95 # 2012-02-06 13 10 10 # # # select a.input_date,b.input_date,a.data1,a.data2,b.data2 # from a_tbl a # right join b_tbl b # on a.input_date = b.input_date; とすると、結果が # +------------+------------+-------+-------+-------+ # | input_date | input_date | data1 | data2 | data2 | # +------------+------------+-------+-------+-------+ # | 2012-02-01 | 2012-02-01 | 10 | 12 | 13 | # | NULL | 2012-02-03 | NULL | NULL | 18 | # | 2012-02-04 | 2012-02-04 | 13 | 15 | 14 | # | NULL | 2012-02-05 | NULL | NULL | 95 | # | 2012-02-06 | 2012-02-06 | 13 | 10 | 10 | # +------------+------------+-------+-------+-------+ # なんですが、実際にはいろんなコードが入っているので、コードも抽出条件に入れたら # select a.input_date,b.input_date,a.data1,a.data2,b.data2 # from a_tbl a # right join b_tbl b # on a.input_date = b.input_date # where # a.code=1111 and b.code='ddd'; # +------------+------------+-------+-------+-------+ # | input_date | input_date | data1 | data2 | data2 | # +------------+------------+-------+-------+-------+ # | 2012-02-01 | 2012-02-01 | 10 | 12 | 13 | # | 2012-02-04 | 2012-02-04 | 13 | 15 | 14 | # | 2012-02-06 | 2012-02-06 | 13 | 10 | 10 | # +------------+------------+-------+-------+-------+ # になってしまいました。 # コードを抽出条件に入れた状態で望ましい結果または上の方の結果になるようなSQLを教えて下さい。 # 'input_dateの集合を得る'(_input_dateの集合) :- findall(_input_date,a_tbl(_input_date,_,_),L1), findall(_input_date,b_tbl(_input_date,_,_),L2), append(L1,L2,L3), setof(_input_date,member(_input_date,L3),_input_dateの集合). 抽出(_input_date,_tbl_aのdata1ならび,_tbl_aのdata2ならび,_tbl_bのdata2ならび) :- 'input_dateの集合を得る'(_input_dateの集合), member(_input_date,_input_dateの集合), findall([_data1],tbl_a(_,_input_date,_data1,_),_tbl_aのdata1ならび), findall([_data2],tbl_a(_,_input_date,_,_data2),_tbl_aのdata2ならび), findall([_data2],tbl_b(_,_input_date,_,_data2),_tbl_bのdata2ならび). # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/633 # # MySQL 5.1です。 # # create table staff_list( # staff_id int(5) primary key //社員番号 # staff_name varchar(8) //社員名 # unit varchar(8) primary key //部署名 # ) # # insert into staff_list (staff_id,staff_name,unit) values # (1,'範馬','総務'), # (2,'愚地','総務'), # (3,'花山','総務'), # (1,'高津','企画'), # (2,'池谷','企画'), # (3,'長嶋','企画'), # (1,'鳩山','営業'), # (2,'野田','営業'), # (3,'小沢','営業'), # (4,'枝野','営業') # # # # このようなテーブルに対してSELECTをかける際、一度のクエリーで # 部署別にソートしたうえで、総務だけstaff_id降順で他を昇順で出したいと思っています。 # # order by unit,IF(staff_name='総務',staff_id desc,staff_id asc) # などと試行してみているのですがうまくできません。 # # どなたかうまい方法をご存じないでしょうか。 # # よろしくお願いいたします。 # スタッフリスト(1,範馬,総務). スタッフリスト(2,愚地,総務). スタッフリスト(3,花山,総務). スタッフリスト(1,高津,企画). スタッフリスト(2,池谷,企画). スタッフリスト(3,長嶋,企画). スタッフリスト(1,鳩山,営業). スタッフリスト(2,野田,営業). スタッフリスト(3,小沢,営業). スタッフリスト(4,枝野,営業). 'このようなテーブルを選択する際、一度部署別にソートしたうえで、総務だけ社員番号降順で出したいと思っています。'(_部署名,_社員番号,_社員名) :- 一度部署別にソートしたうえで(_部署名ならび), 総務だけ社員番号降順で出したい(_部署名ならび,_部署名,_社員番号,_社員名). 一度部署別にソートしたうえで(_部署名ならび) :- findsetof(_部署名,( スタッフリスト(_社員番号,_社員名,_部署名)), _部署名ならび). 総務だけ社員番号降順で出したい(_部署名ならび,_部署名,_社員番号,_社員名) :- member(_部署名,_部署名ならび), 総務だけ社員番号降順で出したい(_部署名,_社員番号,_社員名). 総務だけ社員番号降順で出したい(総務,_社員番号,_社員名) :- 総務だけ社員番号降順で(_社員番号,_社員名). 総務だけ社員番号降順で出したい(_部署名,_社員番号,_社員名) :- \+(_部署名 == 総務), スタッフリスト(_社員番号,_社員名,_部署名). 総務だけ社員番号降順で(_社員番号,_社員名) :- findall([_社員番号,_社員名],( スタッフリスト(_社員番号,_社員名,総務)), L1), 降順でソート(L1,L2), member([社員番号,_社員名],L2). 降順でソート(L1,L2) :- sort(L1,L3), reverse(L3,L2). % % findsetof/3 % # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/666 # # SQLite3を使っています。 # # カラムがなかったらinsert # あったらupdateしたいのですが、 # どういうSQLをかけばいいのでしょうか? # # insert into t1(c1, c2) values("hoge",10) # update t1 set c2=10 WHERE c1="hoge" # このときc1はuniqueです。 # # よろしくお願いします。 # # 'カラムがなかったらinsert あったらupdateしたい'(_テーブル,_カラムならび,_鍵カラム,_鍵値) :- findall(_カラム,( テーブル定義(_テーブル,_番目,_カラム)), L1), 鍵値をセットする(_テーブル,_鍵カラム,_鍵値,P), 'カラムがなかったらinsert あったらupdateしたい'(P,_テーブル,_カラムならび). 鍵値をセットする(_テーブル,L1,_鍵カラム,_鍵値,P) :- length(L1,Len), length(L2,Len), nth1(Nth,L1,_鍵カラム), nth1(Nth,L2,_鍵値), P =.. [_テーブル|L2]. 'カラムがなかったらinsert あったらupdateしたい'(P,_テーブル,_カラムならび) :- call(P),!, ( retract(P), Q =.. [_テーブル|_カラムならび], asserta(Q), fail; true). 'カラムがなかったらinsert あったらupdateしたい'(_,_テーブル,_カラムならび) :- Q =.. [_テーブル|_カラムならび], asserta(Q). # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/684 # # ・DBMS名とバージョン # Oracle 10g # ・テーブルデーた # create table aaa ( # id number(5,0) primary key, -- 主キー # nendo char(4), -- 年度 # tsuki char(2) -- 月 # ); # insert into aaa values (1, '2012', '01'); # insert into aaa values (2, '2012', '02'); # insert into aaa values (3, '2012', '03'); # insert into aaa values (4, '2012', '04'); # insert into aaa values (5, '2012', '05'); # ・欲しい結果 # id, nendo, tsuki # -------------------- # 4, '2012', '04' # 5, '2012', '05, # 1, '2012', '01' # 2, '2012', '02' # 3, '2012', '03' # # ・説明 # 年度/月の昇順に並べたいです。 # 2012年度3月は2013年3月、2012年度4月は2012年4月となるのでただの大小比較では無理でした。 # '・テーブルデータ create table aaa ( id number(5,0) primary key, -- 主キー nendo char(4), -- 年度 tsuki char(2) -- 月 ); insert into aaa values (1, '2012', '01'); insert into aaa values (2, '2012', '02'); insert into aaa values (3, '2012', '03'); insert into aaa values (4, '2012', '04'); insert into aaa values (5, '2012', '05'); ・欲しい結果 id, nendo, tsuki -------------------- 4, '2012', '04' 5, '2012', '05, 1, '2012', '01' 2, '2012', '02' 3, '2012', '03' ・説明 年度/月の昇順に並べたいです。 2012年度3月は2013年3月、2012年度4月は2012年4月となるのでただの大小比較では無理でした。'(_id,_年度,_月) :- 欲しい結果(_id,_年度,_月). 年度の場合の月順('04','05'). 年度の場合の月順('05','06'). 年度の場合の月順('06','07'). 年度の場合の月順('07','08'). 年度の場合の月順('08','09'). 年度の場合の月順('09','10'). 年度の場合の月順('10','11'). 年度の場合の月順('11','12'). 年度の場合の月順('12','01'). 年度の場合の月順('01','02'). 年度の場合の月順('02','03'). 年度の場合の月順('03','04'). 欲しい結果(_id,_年度,_月) :- findsetof(_年度,aaa(_,_年度,_),_年度ならび), member(_年度,_年度ならび), 年度順に並べる('04',_id,_年度,_月). 年度順に並べる(_月,_id,_年度,_月) :- aaa(_id,_年度,_月). 年度順に並べる(_月_1,_id,_年度,_月) :- \+(_月_1 = '03'), 年度の場合の月順(_月,_次の月), 年度順に並べる(_次の月,_id,_年度,_月). # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/684 # # ・DBMS名とバージョン # Oracle 10g # ・テーブルデーた # create table aaa ( # id number(5,0) primary key, -- 主キー # nendo char(4), -- 年度 # tsuki char(2) -- 月 # ); # insert into aaa values (1, '2012', '01'); # insert into aaa values (2, '2012', '02'); # insert into aaa values (3, '2012', '03'); # insert into aaa values (4, '2012', '04'); # insert into aaa values (5, '2012', '05'); # ・欲しい結果 # id, nendo, tsuki # -------------------- # 4, '2012', '04' # 5, '2012', '05, # 1, '2012', '01' # 2, '2012', '02' # 3, '2012', '03' # # ・説明 # 年度/月の昇順に並べたいです。 # 2012年度3月は2013年3月、2012年度4月は2012年4月となるのでただの大小比較では無理でした。 # '・テーブルデータ create table aaa ( id number(5,0) primary key, -- 主キー nendo char(4), -- 年度 tsuki char(2) -- 月 ); insert into aaa values (1, '2012', '01'); insert into aaa values (2, '2012', '02'); insert into aaa values (3, '2012', '03'); insert into aaa values (4, '2012', '04'); insert into aaa values (5, '2012', '05'); ・欲しい結果 id, nendo, tsuki -------------------- 4, '2012', '04' 5, '2012', '05, 1, '2012', '01' 2, '2012', '02' 3, '2012', '03' ・説明 年度/月の昇順に並べたいです。 2012年度3月は2013年3月、2012年度4月は2012年4月となるのでただの大小比較では無理でした。'(_id,_年度,_月) :- 欲しい結果(_id,_年度,_月). 欲しい結果(_id,_年度,_月) :- findsetof(_年度,aaa(_,_年度,_),_年度ならび), member(_年度,_年度ならび), 年度順に並べる(['04','05','06','07','08','09','10','11','12','01','02','03'],_id,_年度,_月). 年度順に並べる([_月|R],_id,_年度,_月) :- aaa(_id,_年度,_月). 年度順に並べる([_|R],_id,_年度,_月) :- 年度順に並べる(R,_id,_年度,_月). # 質問です。 # MySQL5です。 # テーブルデータはDATE(YYYYMMの6けたのint型),CODE(varchar型),VALUE(varchar型) の3カラムからなります。 # 各日付順の降順にしたいのですが、スレッドのように、同じコードの場合、その下に日付順でソートしたいです。 # 言っていることが、よくわからなくてすみません。 # # 元テーブル # DATE, CODE, VALUE # .... # 20140401, 11, A # 20140402, 12, B # 20140403, 11, C # 20140404, 13, D # 20140405, 12, E # 20140406, 11, F # .... # # 欲しい結果 # 20140401, 11, A # 20140403, 11, C # 20140406, 11, F # 20140402, 12, B # 20140405, 12, E # 20140404, 13, D # # 宜しくお願い致します。 # # # 879 名前:NAME IS NULL [sage]: 2014/04/25(金) 17:41:21.67 ID:??? # >>877 # どうも質問が明確じゃないけど、 # insert into tname select 〜 # の形式にすればとりあえず解決しそうな話に見える。 # # >>878 # order by code, date ということ? # # # 880 名前:NAME IS NULL []: 2014/04/25(金) 17:47:38.30 ID:+Fb19Efw (3) # 879 # 分かりずらい # 欲しい結果にしてしまいました。 # # 第1キーは、日付です。 # # 元テーブル # DATE, CODE, VALUE # 20140401, 13, A # 20140402, 11, B # 20140403, 12, C # 20140404, 13, D # 20140405, 12, E # 20140406, 11, F # # 欲しい結果 # 20140401, 13, A # 20140404, 13, D # 20140402, 11, B # 20140406, 11, F # 20140403, 12, C # 20140405, 12, E # # 宜しくお願い致します。 # # # 要するに第一キーは降順、第二キーは昇順で整列する。 # 'テーブルデータはDATE(YYYYMMの6けたのint型),CODE(varchar型),VALUE(varchar型) の3カラムからなります。各日付順の降順にしたいのですが、スレッドのように、同じコードの場合、その下に日付順でソートしたいです。'(_DATE,_CODE,_VALUE) :- '要するに第一キーは降順、第二キーは昇順で整列する。'(_DATE,_CODE,_VALUE). '要するに第一キーは降順、第二キーは昇順で整列する。'(_DATE,_CODE,_VALUE) :- 第一キー順序(_CODE), 第二キー順序(_CODE,_DATE), 元テーブル(_DATE,_CODE,_VALUE). 第一キー順序(_CODE) :- findsetof(_CODE,( 元テーブル(_DATE,_CODE,_VALUE)), L1), reverse(L1,L2), member(_CODE,L2). 第二キー順序(_CODE,_DATE) :- findsetof(_DATE,( 元テーブル(_DATE,_CODE,_VALUE)), L1), member(_DATE,L1). % 以下のサイトは # 出題場所 :: http://peace.2ch.net/test/read.cgi/db/1402919549/274 # よろしくお願いいたします。 # 【DBMS名とバージョン】Oracle 11g # 【テーブルデータ】 # ID   YMD # 1  20140101 # 1  20140102 # 1  20140103 # 1  20140105 # 1  20140106 # 2  20140101 # 2  20140102 # 【欲しい結果 】 # ID START_YMD END_YMD # 1 20140101 20140103 # 1 20140105 20140106 # 2 20140101 20140102 # 【説明】 # レコード単位で一日の日付を持つデータをグループかして、 # 開始日付と終了日付に集約したいです。 # ただし、一日でも間があれば、集約データ内では別レコードとして扱いたいです。 # # どなたかいいお知恵がございましたら、よろしくお願いいたしますm(_ _)m # # 'レコード単位で一日の日付を持つデータをグループかして、 開始日付と終了日付に集約したいです。 ただし、一日でも間があれば、集約データ内では別レコードとして扱いたいです。'(_id,_START_YMD,_END_YMD) :- setof(_ID,[_ID,_YMD] ^ table(_ID,_YMD),_ID候補), member(_ID,_ID候補), setof(_YMD,[_ID,_YMD] ^ table(_ID,_YMD),_YMD候補), 連続性検査(_YMD候補,_START_YMD,_END_YMD). 連続性検査(_YMD候補,_START_YMD,_END_YMD) :- append([L1,[_START_YMD|R2],L2],_YMD候補), 連続している([_START_YMD|R2],_END_YMD), 連続していない(L1,[_START_YMD]), 連続していない([_END_YMD],L2). 連続している([_END_YMD],_END_YMD) :- !. 連続している([_YMD_1,_YMD_2|R1],_END_YMD) :- 翌日(_YMD_1,_YMD_2), 連続している([_YMD_2|R1],_END_YMD). 連続していない(L1,L2) :- \+((last(L1,_YMD_1),L2 = [_YMD_2|_],翌日(_YMD_1,_YMD_2))). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 翌日(_YMD,_翌日) :- 年月日(_YMD,_年,_月,_日), 翌日(_年,_月,_日,_翌日). 年月日(_YMD,_年,_月,_日) :- sub_atom(_YMD,0,2,_,_年), sub_atom(_YMD,2,2,_,_月), sub_atom(_YMD,4,2,_,_日). 翌日(_年,_月,_日,_翌日) :- 年月換わり(年,_月,_日,_翌日),!. 翌日(_年,_月,_日,_翌日) :- 翌日の日(_日,_翌日の日), atomic_list_concat([_年,_月,_翌日の日],_翌日). 年月換わり(_年,'02',_月末日,_翌日) :- 二月月末(_年,'02',_月末日,_翌日). 年月換わり(_年,_月,_月末日,_翌日) :- 小の月の月末日の翌日(_月,_月末日,_翌日). 年月換わり(_年,_月,_月末日,_翌日) :- 大の月の月末日の翌日(_年,_月,_月末日,_翌日). 二月月末(_年,'02','29',_翌日) :- atomic_list_concat([_年,'03','01'],_翌日). 二月月末(_年,'02','28',_翌日) :- atom_number(_年,_年整数), \+(うるう年(_年整数)), atomic_list_concat([_年,'03','01'],_翌日). 小の月の月末日の翌日(_月,'30',_翌日) :- member(_月,['04','06','09','11']), 翌月(_月,_翌月), atomic_list_concat([_年,_翌月,'01'],_翌日). 大の月の月末日の翌日(_年,_月,'31',_翌日) :- member(_月,['01','03','05','07','08','10','12']), 翌月(_月,_翌月), 年換わり(_年,_月,_年_1), atomic_list_concat([_年_1,_翌月,'01'],_翌日). 年換わり(_年,'12',_翌年) :- 翌年(_年,_翌年). 年換わり(_年,_月,_年) :- \+(_月='12'). うるう年(_うるう年) :- 0 is mod _うるう年 mod 400,!. うるう年(_年) :- 0 is _年 mod 100,!,fail. うるう年(_うるう年) :- 0 is _うるう年 mod 4. 翌月('01','02'). 翌月('02','03'). 翌月('03','04'). 翌月('04','05'). 翌月('05','06'). 翌月('06','07'). 翌月('07','08'). 翌月('08','09'). 翌月('09','10'). 翌月('10','11'). 翌月('11','12'). 翌月('12','01'). 翌日の日('01','02'). 翌日の日('02','03'). 翌日の日('03','04'). 翌日の日('04','05'). 翌日の日('05','06'). 翌日の日('06','07'). 翌日の日('07','08'). 翌日の日('08','09'). 翌日の日('09','10'). 翌日の日('10','11'). 翌日の日('11','12'). 翌日の日('12','13'). 翌日の日('13','14'). 翌日の日('14','15'). 翌日の日('15','16'). 翌日の日('16','17'). 翌日の日('17','18'). 翌日の日('18','19'). 翌日の日('19','20'). 翌日の日('20','21'). 翌日の日('21','22'). 翌日の日('22','23'). 翌日の日('23','24'). 翌日の日('24','25'). 翌日の日('25','26'). 翌日の日('26','27'). 翌日の日('27','28'). 翌日の日('28','29'). 翌日の日('29','30'). 翌日の日('30','31'). 翌年(_年,_翌年) :- atom_number(_年,_年整数), succ(_年整数,_翌年の年整数), atom_number(_翌年,_翌年の年整数). % 以下のサイトは # 要件 # # ユーザーテーブル(users)は入会日(joined_on)と退会日(left_on)を持っている # 退会していないユーザーの場合、退会日にはNULLが入る # ユーザー数の増減を確認するために、日付単位で入会したユーザーの人数と退会したユーザーの人数を一覧化したい。どうすれば取得できるか? # 例 # # ユーザーテーブル(users) # # id joined_on left_on # 1 2014-08-01 2014-08-10 # 2 2014-08-01 2014-08-05 # 3 2014-08-03 NULL # 4 2014-08-03 2014-08-10 # 5 2014-08-10 NULL # 期待する出力結果 # # date joined_count left_count # 2014-08-01 2 0 # 2014-08-03 2 0 # 2014-08-05 0 1 # 2014-08-10 1 2 # ユーザーテーブル(1,'2014-08-01','2014-08-10'). ユーザーテーブル(2,'2014-08-01','2014-08-05'). ユーザーテーブル(3,'2014-08-03','NULL'). ユーザーテーブル(4,'2014-08-03','2014-08-10'). ユーザーテーブル(5,'2014-08-10','NULL'). 'ユーザーテーブル(users)は入会日(joined_on)と退会日(left_on)を持っている 退会していないユーザーの場合、退会日にはNULLが入る ユーザー数の増減を確認するために、日付単位で入会したユーザーの人数と 退会したユーザーの人数を一覧化したい。どうすれば取得できるか?' :- setof(_日付,[_日付] ^ 'joined_onの候補+left_offの候補'(_日付),_日付候補), '日付単位で入会したユーザーの人数と退会したユーザーの人数を一覧したい。'(_日付候補). 'joined_onの候補+left_offの候補'(_日付) :- ユーザーテーブル(_,_入会日付,_退会日付), member(_日付,[_入会日付,_退会日付]), \+(_日付 = 'NULL'). '日付単位で入会したユーザーの人数と退会したユーザーの人数を一覧したい。'(_日付候補) :- '日付単位で入会したユーザーの人数と退会したユーザーの人数を'(_日付候補,_日付,_入会したユーザーの人数,_退会したユーザーの人数,R), 表示する(_日付,_入会したユーザーの人数,_退会したユーザーの人数), R = []. '日付単位で入会したユーザーの人数と退会したユーザーの人数を'(_日付候補,_日付,_入会したユーザーの人数,_退会したユーザーの人数,R) :- append(_,[_日付|R],_日付候補), 度数(ユーザーテーブル(_,_日付,_),_入会したユーザーの人数), 度数(ユーザーテーブル(_,_,_日付),_退会したユーザーの人数). 表示する(_日付,_入会したユーザーの人数,_退会したユーザーの人数) :- writef('%t %3r %3r\n',[_日付,_入会したユーザーの人数,_退会したユーザーの人数]). 度数(_目標,_度数) :- findall(1,_目標,L), length(L,_度数). % 以下のサイトは # 出題場所 :: http://peace.2ch.net/test/read.cgi/tech/1392388003/860 # [1] 授業単元: プログラミング基礎 # [2] 問題文 # n個の整数を含む集合Sと、 # q個の異なる整数を含む集合Tを入力とし、 # Tに含まれる整数の中でSに含まれるものの数Cを # 出力するプログラムを作成せよ。 # # 入力 # 1行目にSを表すn個の整数、 # 2行目にTを表すq個の整数が与えられる。 # 出力 # Tに含まれる整数の中でSに含まれるものの数Cを出力せよ。 # 条件 # n : 10以下 # q : 5以下 # 集合に含まれる整数の値 以上、6未満 # # 実行例) # 3 8 4 1 9 2 5 7 6 入力(集合S:n個(9)) # 1 3 5 10 入力(集合T:q個(4)) # 3 出力(C) # 21 30 5 21 10 39 14 入力(集合S:n個(7)) # 1 21 10 入力(集合T:q個(3)) # 2 出力(C) # 'n個の整数を含む集合Sと、 q個の異なる整数を含む集合Tを入力とし、 Tに含まれる整数の中でSに含まれるものの数Cを 出力するプログラムを作成せよ。'(_n,_q) :- 'n個の整数を含む集合Sと、q個の異なる整数を含む集合Tを入力とし、'(_n,_S,_q,_T), 'Tに含まれる整数の中でSに含まれるものの数Cを'(_T,_S,_C), 出力する(_C). 'n個の整数を含む集合Sと、q個の異なる整数を含む集合Tを入力とし、'(_n,_S,_q,_T) :- 'n個の整数を含む集合Sの入力、'(_n,_S), 'q個の異なる整数を含む集合Tの入力'(_q,_T). 'n個の整数を含む集合Sの入力、'(_n,_S) :- writef('集合S 入力する整数は%t個です : ',[_n]), get_split_line([' '],_S). 'q個の異なる整数を含む集合Tの入力'(_q,_T) :- writef('集合T 入力する整数は%t個で、同じ数字であってはいけません : ',[_q]), get_split_line([' '],_T). 'Tに含まれる整数の中でSに含まれるものの数Cを'(_T,_S,_C) :- setof(_整数,member(_整数,_T),_T_1), count((member(_N,_T_1),member(_N,_S)),_C). 出力する(_C) :- writef('%t\n',[_C]). % 以下のサイトは # 出題場所 :: http://peace.2ch.net/test/read.cgi/tech/1392388003/757 # [1] 授業単元: プログラミング基礎 # [2] 問題文 # 担当者名が"end"になるまで、担当者名と売上を入力する。 # 売上合計、平均、最も売上が多い担当者名とその売上、 # 最も売上が低い担当者名とその売上を表示する。 # '担当者名が"end"になるまで、担当者名と売上を入力する。 売上合計、平均、最も売上が多い担当者名とその売上、 最も売上が低い担当者名とその売上を表示する。' :- '担当者名が"end"になるまで、担当者名と売上を入力する。'(_担当者名_売上ならび), '売上合計、平均、最も売上が多い担当者名とその売上、 最も売上が低い担当者名とその売上を表示する。'(_担当者_売上ならび). '担当者名が"end"になるまで、担当者名と売上を入力する。'(_担当者名_売上ならび) :- findall([_担当者名,_売上],( 担当者の入力(_担当者名), ( _担当者名 = end,!,fail; 売上の入力(_売上))), _担当者名_売上ならび). 担当者の入力(_担当者名) :- write('担当者名を入力してください (endで終了する) : '), get_line(_担当者名). 売上の入力(_売上) :- 整数を得る('売上を入力して下さい : ',true,_売上). '売上合計、平均、最も売上が多い担当者名とその売上、 最も売上が低い担当者名とその売上を表示する。'(_担当者_売上ならび) :- '売上合計、平均、'(_担当者_売上ならび,_売上合計,_平均), '最も売上が多い担当者名とその売上、最も売上が低い担当者名とその売上を'(_担当者_売上ならび,_最も売上が多い担当者名,_最も売上が多い担当者の売上,_最も売上が低い担当者名,_最も売上が低い担当者の売上), 表示する(_売上合計,_平均,_最も売上が多い担当者名,_最も売上が多い担当者の売上,_最も売上が低い担当者名,_最も売上が低い担当者の売上). '売上合計、平均、'(_担当者_売上ならび,_売上合計,_平均) :- findall(_売上,( member([_,_売上],_担当者名_売上ならび)), _売上ならび), sum_list(_売上ならび,_売上合計), length(_売上ならび,_要素数), _平均 is _売上合計 / _要素数. '最も売上が多い担当者名とその売上、最も売上が低い担当者名とその売上を'(_担当者_売上ならび,_最も売上が多い担当者名,_最も売上が多い担当者の売上,_最も売上が低い担当者名,_最も売上が低い担当者の売上) :- setof(_担当者,[_担当者,_売上] ^ member([_担当者,_売上],_担当者_売上ならび),_担当者名ならび), 担当者別の売上合計(_担当者_売上ならび,_担当者名ならび,_担当者別売上合計ならび), '最も売上が多い担当者名とその売上、'(_担当者別売上合計ならび,_最も売上が多い担当者,_最も売上が多い担当者の売上), '最も売上が低い担当者名とその売上'(_担当者別売上合計ならび,_最も売上が低い担当者,_最も売上が低い担当者の売上). 担当者別の売上合計(_担当者_売上ならび,_担当者名ならび,_担当者別売上合計ならび) :- findall([_担当者名,_売上合計],( member(_担当者名,_担当者名ならび), findsum(_売上,( member([_担当者名,_売上],_担当者別売上ならび), _売上合計))), _担当者別売上合計ならび). '最も売上が多い担当者名とその売上、'(_担当者別売上合計ならび,_最も売上が多い担当者,_最も売上が多い担当者の売上) :- append(L1,[[_最も売上が多い担当者,_最も売上が多い担当者の売上]|L2],_担当者別売上合計ならび), \+((member([_,_売上合計],L1),_売上合計 > _最も売上が多い担当者の売上)), \+((member([_,_売上合計],L2),_売上合計 > _最も売上が多い担当者の売上)). '最も売上が低い担当者名とその売上、'(_担当者別売上合計ならび,_最も売上が低い担当者,_最も売上が低い担当者の売上) :- append(L1,[[_最も売上が低い担当者,_最も売上が低い担当者の売上]|L2],_担当者別売上合計ならび), \+((member([_,_売上合計],L1),_売上合計 < _最も売上が低い担当者の売上)), \+((member([_,_売上合計],L2),_売上合計 < _最も売上が低い担当者の売上)). 表示する(_売上合計,_平均,_最も売上が多い担当者名,_最も売上が多い担当者の売上,_最も売上が低い担当者名,_最も売上が低い担当者の売上) :- writef('売上合計 = %t\n平均 = %t\n',[_売上合計,_平均]), writef('最も売上が多い担当者名 = %t\n最も売上が多い担当者の売上 = %t\n最も売上が低い担当者名 = %t\n',[_最も売上が多い担当者名,_最も売上が多い担当者の売上]), writef('最も売上が低い担当者名 = %t\n最も売上が低い担当者の売上 = %t\n',[_最も売上が低い担当者名,_最も売上が低い担当者の売上]). % 以下のサイトは # 質問です。 # MySQL5です。 # テーブルデータはDATE(YYYYMMの6けたのint型),CODE(varchar型),VALUE(varchar型) の3カラムからなります。 # 各日付順の降順にしたいのですが、スレッドのように、同じコードの場合、その下に日付順でソートしたいです。 # 言っていることが、よくわからなくてすみません。 # # 元テーブル # DATE, CODE, VALUE # .... # 20140401, 11, A # 20140402, 12, B # 20140403, 11, C # 20140404, 13, D # 20140405, 12, E # 20140406, 11, F # .... # # 欲しい結果 # 20140401, 11, A # 20140403, 11, C # 20140406, 11, F # 20140402, 12, B # 20140405, 12, E # 20140404, 13, D # # 宜しくお願い致します。 # # # 879 名前:NAME IS NULL [sage]: 2014/04/25(金) 17:41:21.67 ID:??? # >>877 # どうも質問が明確じゃないけど、 # insert into tname select 〜 # の形式にすればとりあえず解決しそうな話に見える。 # # >>878 # order by code, date ということ? # # # 880 名前:NAME IS NULL []: 2014/04/25(金) 17:47:38.30 ID:+Fb19Efw (3) # 879 # 分かりずらい # 欲しい結果にしてしまいました。 # # 第1キーは、日付です。 # # 元テーブル # DATE, CODE, VALUE # 20140401, 13, A # 20140402, 11, B # 20140403, 12, C # 20140404, 13, D # 20140405, 12, E # 20140406, 11, F # # 欲しい結果 # 20140401, 13, A # 20140404, 13, D # 20140402, 11, B # 20140406, 11, F # 20140403, 12, C # 20140405, 12, E # # 宜しくお願い致します。 # # # 要するに第一キーは降順、第二キーは昇順で整列する。 # 'テーブルデータはDATE(YYYYMMの6けたのint型),CODE(varchar型),VALUE(varchar型) の3カラムからなります。各日付順の降順にしたいのですが、スレッドのように、同じコードの場合、その下に日付順でソートしたいです。'(_DATE,_CODE,_VALUE) :- '要するに第一キーは降順、第二キーは昇順で整列する。'(L1,_第一番目の日付ならび), 情報を取り出す(_第一番目の日付ならび,L1,_DATE,_CODE,_VALUE). '要するに第一キーは降順、第二キーは昇順で整列する。'(L1,_第一番目の日付ならび) :- 第一キー順序(_逆順コードならび), setof(_第一番目の日付, [_CODE,_第一番目の日付] ^ ( 'CODEを取り出す'(_逆順コードならび,_CODE), 第二キー順序(_CODE,_,_第一番目の日付)),_第一番目の日付ならび). 第一キー順序(_逆順コードならび) :- setof(_CODE,[_DATE,_CODE,_VALUE] ^ 元テーブル(_DATE,_CODE,_VALUE),L1), reverse(L1,_逆順コードならび). 逆順に整列して取り出す(_逆順コードならび,_CODE) :- member(_CODE,_逆順コードならび). 第二キー順序(_CODE,[_第一番目の日付|R],_第一番目の日付) :- setof(_DATE,[_DATE,_CODE,_VALUE] ^ 元テーブル(_DATE,_CODE,_VALUE),[_第一番目の日付|R]). 情報を取り出す(_第一番目の日付ならび,_逆順コードならび,_DATE,_CODE,_VALUE) :- member(_DATE_1,_第一番目の日付ならび), 'CODEを決める'(_逆順コードならび,_DATE_1,_CODE), 元テーブル(_DATE,_CODE,_VALUE). 'CODEを決める'(_逆順コードならび,_DATE_1,_CODE) :- member(_CODE,_逆順コードならび), setof(_DATE,[_DATE,_VALUE] ^ 元テーブル(_DATE,_CODE,_VALUE),[_DATE_1|_]). % 以下のサイトは # 出題 :: プログラミングのお題スレ Part3 #482 # # お題:二種類の文字からなる長さが奇数の文字列があるとき多数派の文字を求める。 # 例 # aabaabbab -> a '二種類の文字からなる長さが奇数の文字列があるとき多数派の文字を求める。'(_二種類の文字からなる長さが奇数の文字列,_多数派の文字) :- 二種類の文字からなる(_二種類の文字からなる長さが奇数の文字列,_文字_1,_文字_2), '長さが奇数の文字列があるとき多数派の文字を求める。'(_二種類の文字からなる長さが奇数の文字列,_文字_1,_文字_2,_多数派の文字). 二種類の文字からなる(_二種類の文字からなる長さが奇数の文字列,_文字_1,_文字_2) :- setof(_文字,[_文字,S,E] ^ sub_atom(_二種類の文字からなる長さが奇数の文字列,S,1,E,_文字),[_文字_1,_文字_2]). '長さが奇数の文字列があるとき多数派の文字を求める。'(_二種類の文字からなる長さが奇数の文字列,_文字_1,_文字_2,_多数派の文字) :- 二種類の文字の数を数える(_二種類の文字からなる長さが奇数の文字列,_文字_1,_文字_2,L1,L2), 多数派の文字(L1,L2,_文字_1,_文字_2,_多数派の文字). 二種類の文字の数を数える(_二種類の文字からなる長さが奇数の文字列,_文字_1,_文字_2,L1,L2) :- 文字列中のある文字の文字数を形象化してならびとする(_二種類の文字からなる長さが奇数の文字列,_文字_1,L1), 文字列中のある文字の文字数を形象化してならびとする(_二種類の文字からなる長さが奇数の文字列,_文字_2,L2). 文字列中のある文字の文字数を形象化してならびとする(_文字列,_文字,_文字数を形象化したならび) :- findall(_,sub_atom(_文字列,_,1,_,_文字),_文字数を形象化したならび). 多数派の文字(L1,L2,_多数派の文字,_,_多数派の文字) :- append(L2,[_|_],L1). 多数派の文字(L1,L2,_,_多数派の文字,_多数派の文字) :- append(L1,[_|_],L2). % 以下のサイトは # twitter_by_@dll7_20140324 # @dll7 29分 # 正規表現で # AXAYAZ # BXBYBZ # CXCYZC # のA B Cがマッチするように書くには何が一番楽? # ただし、 # AXBYCZ # BXAYAZ # とかはマッチしないようにする。三つ同じ時だけマッチしたいとき '正規表現で AXAYAZ BXBYBZ CXCYZC のA B Cがマッチするように書くには何が一番楽?'(_文字列,_検索文字) :- 文字候補(_文字列,_検索文字), findall(_,sub_atom(_文字列,_,1,_,_検索文字),[_,_,_]). 文字候補(_文字列,_文字) :- setof(_文字,[_文字列,_文字] ^ 一文字ずつ取り出す(_文字列,_文字),_文字ならび), member(_文字,_文字ならび). 一文字ずつ取り出す(_文字列,_文字) :- sub_atom(_文字列,_,1,_,_文字). % 以下のサイトは # 出題場所 :: http://toro.2ch.net/test/read.cgi/db/1371476534/541 # 質問です教えてください # # データベース = access # テーブル名 = T_DATA # # SQLで取得したい結果は、KEYごとに日数を取得したいのですが # 重複する日数はカウントから除外したいです。 # どんなSQLを書けばいいですか? # # ・キーは、日数=5日 # ・キーは、日数=1日 # # ---------------------------------- # キー, 開始日, 終了日 # ---------------------------------- # 1, 2014/01/01, 2014/01/01 |→ 日数=1日 # 1, 2014/01/02, 2014/01/02 |→ 日数=1日 # 1, 2014/01/02, 2014/01/02 |→ 日数=0日(重複) # 1, 2014/01/03, 2014/01/03 |→ 日数=1日 # 1, 2014/01/04, 2014/01/05 |→ 日数=2日、合計=5日 # --- # 2, 2014/01/01, 2014/01/01 |→ 日数=1日 # 2, 2014/01/01, 2014/01/01 |→ 日数=0日(重複)、合計=1日 # # ↓これだと重複がカウントされてしまいます。 # SELECT # キー # ,SUM(DATEDIFF('d', 開始日, 終了日)+1) AS 日数 # FROM # T_DATA # GROUP BY # キー # 'データベース = access テーブル名 = T_DATA SQLで取得したい結果は、KEYごとに日数を取得したいのですが 重複する日数はカウントから除外したいです。'(_キーごとの日数) :- setof(_キー,[_キー,_開始日,_終了日] ^ 'T_DATA'(_キー,_開始日,_終了日),_キーならび), findall([_キー,_日数],( member(_キー,_キーならび), キーの日数を得る(_キー,_日数)), _キーごとの日数). キーの日数を得る(_キー,_日数) :- findall(_日,( 'T_DATA'(_キー,_開始日,_終了日), 整数構造に変換(_開始日,_終了日,_開始日整数構造,_終了日整数構造), 範囲の日を引出す(_開始日整数構造,_終了日整数構造,_日)), L1), 重複日を取り除いた日数(L1,_日数). 整数構造に変換(_開始日,_終了日,_開始日整数構造,_終了日整数構造) :- read_term_from_atom(_開始日,_開始日整数構造), read_term_from_atom(_終了日,_終了日整数構造). 範囲の日を引出す(_終了日,_終了日,_終了日) :- !. 範囲の日を引出す(_日,_終了日,_日). 範囲の日を引出す(_日_1,_終了日,_日) :- 翌日(_日_1,_翌日), 範囲の日を引出す(_翌日,_終了日,_日). 翌日(_年/12/_31,_翌年/1/1) :- _翌年 is _年 + 1,!. 翌日(_年/_月/_日,_年/_翌月/1) :- 月末日(_年/_月/_日), _翌月 is _月 + 1,!. 翌日(_年/_月/_日,_年/_月/_翌日の日) :- _翌日の日 is _日 + 1,!. 月末日(_年/2/29) :- うるう年(_年),!. 月末日(_年/2/28) :- \+(うるう年(_年)),!. 月末日(_年/_月/30) :- member(_月,[4,6,9,11]),!. 月末日(_年/_月/31) :- member(_月,[1,3,5,7,8,10,12]). うるう年(_年) :- 0 is _年 mod 400,!. うるう年(_年) :- 0 is _年 mod 100,!, fail. うるう年(_年) :- 0 is _年 mod 4,!. うるう年(_年) :- \+(0 is _年 mod 4), fail. 重複日を取り除いた日数(L1,_日数) :- sort(L1,L2), length(L2,_日数). % 以下のサイトは # 出題場所 :: http://toro.2ch.net/test/read.cgi/db/1371476534/493 # SQLServer2008R2です. # テーブルデータはDATE(YYYYMMの6けたのint型),CODE(varchar型),VALUE(float型) # の3カラムからなります.各DATEの各CODEに対して過去3か月分の総和を算出したいと思います. # 元テーブル # DATE, CODE, VALUE # .... # 200101, AAA, 1 # 200102, AAA, 2 # 200103, AAA, 3 # 200104, AAA, 4 # 200101, BBB, 1 # .... # # 欲しい結果 # 200103, AAA, 6 # 200104, AAA, 9 # ....... # # 下記のようなSQLを書いたのですが,同じ結果の行が12か月分でてきます. # 何処を修正すればよろしいでしょうか?もしくは全然違うSQLでしょうか? # # SELECT A.DATE, A.CODE, SUM(B.VALUE) OVER (PARTITION BY B.DATE, B.CODE) # FROM TABLE A, TABLE B # WHERE A.CODE=B.CODE AND B.DATE>=A.DATE AND B.DATE>=(A.DATEの3か月前←計算式が長いので省略です) # ORDER BY A.DATE, A.CODE # # よろしくお願いいたします. # 'A'(200101,'AAA',1). 'A'(200102,'AAA',2). 'A'(200103,'AAA',3). 'A'(200104,'AAA',4). 'A'(200101,'BBB',1). 過去三ヶ月の集計(_過去三ヶ月の集計ならび) :- '_DATE,_CODEを鍵として、過去三ヶ月の_VALUEの集計'(_過去三ヶ月の集計ならび). '_DATE,_CODEを鍵として、過去三ヶ月の_VALUEの集計'(_過去三ヶ月の集計ならび) :- '_DATE,_CODEを鍵とする'(_DATE_CODEならび), findall([_DATE,_CODE,_集計],( '過去三ヶ月の全ての_DATE,_CODEに対して、_VALUEを集約する'(_DATE,_CODE,_DATE_CODEならび,_集計)),_過去三ヶ月の集計ならび). '_DATE,_CODEを鍵とする'(_DATE_CODEならび) :- setof([_DATE,_CODE],[_DATE,_CODE,_VALUE] ^ 'A'(_DATE,_CODE,_VALUE),_DATE_CODEならび). '過去三ヶ月の全ての_DATE,_CODEに対して、_VALUEを集約する'(_DATE,_CODE,_DATE_CODEならび,_集計) :- member([_DATE,_CODE],_DATE_CODEならび), '過去三ヶ月の_DATE,_CODEで_VAULEを集約'(_DATE,_CODE,_集計). '過去三ヶ月の_DATE,_CODEで_VAULEを集約'(_DATE,_CODE,_集計) :- '3ヶ月前の起点月'(_DATE,_3ヶ月前の起点月), findsum(_VALUE,( テーブルデータは過去三ヶ月の範囲内(_DATE,_CODE,_3ヶ月前の起点月,_VALUE)),_集計). テーブルデータは過去三ヶ月の範囲内(_DATE,_CODE,_3ヶ月前の起点月,_VALUE) :- 'A'(_DATE_1,_CODE,_VALUE), between(_3ヶ月前の起点月,_DATE,_DATE_1). '3ヶ月前の起点月'(_今月,_3ヶ月前の起点年月) :- 今月が1月から3月の範囲では前年となる(_今月,_3ヶ月前の起点年月),!. '3ヶ月前の起点月'(_今月,_3ヶ月前の起点年月) :- 今月が4月から12月の範囲では今年となる(_今月,_3ヶ月前の起点年月). 今月が1月から3月の範囲では前年となる(_今月,_3ヶ月前の起点月) :- M is _今月 mod 100, M =< 3, _3ヶ月前の起点月 is _今月 - 100 + 9. 今月が4月から12月の範囲では今年となる(_今月,_3ヶ月前の起点月) :- _3ヶ月前の起点月 is _今月 - 3. findsum(A,B,C) :- findall(A,B,L), sum_list(L,C). % 以下のサイトは 語候補(2,_,_,尾崎,尾崎). 語候補(3,_前文字列,_後文字列,太加夫,隆大) :- sub_atom(_前文字列,_,_,_,尾崎). 語候補(3,_前文字列,_後文字列,太加夫,太加夫) :- \+(sub_atom(_前文字列,_,_,_,尾崎)). 文字列から最長一致法を用いて語候補を検索する(_文字列,_前文字列,_適合文字列,_後文字列) :- 候補文字列長さならび(_候補文字列長さならび), 文字列から最長一致法を用いて語候補を検索する(_文字列,_候補文字列長さならび,_前文字列,_適合文字列,_後文字列). 文字列から最長一致法を用いて語候補を検索する(_文字列,_候補文字列長さならび,_前文字列,_適合文字列,_後文字列) :- sub_atom(_文字列,_開始位置,_長さ,_残り長さ,_適合文字列_1), member(_長さ,_候補文字列長さならび), 文字列の長さと候補文字列を得る(_文字列,_候補文字列長さならび,_長さ,_適合文字列_1,_適合文字列_1_2), 前文字列と後文字列を得る(_文字列,_開始位置,_長さ,_残り長さ,_前文字列_1,_後文字列_1), 文字列から最長一致法を用いて語候補を検索する(_候補文字列長さならび,_文字列長により降順整列した語候補ならび,_前文字列_1,_適合文字列_1_2,_後文字列_1,_前文字列,_適合文字列,_後文字列). 文字列から最長一致法を用いて語候補を検索する(_候補文字列長さならび,_前文字列,_適合文字列,_後文字列,_前文字列,_適合文字列,_後文字列). 文字列から最長一致法を用いて語候補を検索する(_候補文字列長さならび,_前文字列_1,_適合文字列_1,_後文字列_1,_前文字列,_適合文字列,_後文字列) :- 文字列から最長一致法を用いて語候補を検索する(_後文字列_1,_候補文字列長さならび,_前文字列_2,_適合文字列,_後文字列), atomic_list_concat([_前文字列_1,_適合文字列_1,_前文字列_2],_前文字列). 候補文字列長さならび(_候補文字列長さならび) :- findall(_長さ,( setof(_長さ,語候補(_長さ,_,_,_,_),[_長さ])), _候補文字列長さならび_1), reverse(_候補文字列長さならび_1,_候補文字列長さならび),!. '文字列の長さと前文字列・適合文字列・後文字列を得る'(_文字列,_開始位置,_長さ,_残り長さ,_語候補,_前文字列_1,_適合文字列_1,_後文字列_1) :- 前文字列と後文字列を得る(_文字列,_開始位置,_長さ,_残り長さ,_前文字列_1,_後文字列_1), 語候補(_長さ,_前文字列,_後文字列,_語候補,_適合文字列_1). 前文字列と後文字列を得る(_文字列,_開始位置,_長さ,_残り長さ,_前文字列_1,_後文字列_1) :- sub_atom(_文字列,0,_開始位置,_,_前文字列_1), sub_atom(_文字列,_,_残り長さ,0,_後文字列_1). % 以下のサイトは 語候補(2,尾崎,尾崎). 語候補(3,太加夫,隆大). 文字列から最長一致法を用いて語候補を検索する(_文字列,_前文字列,_適合文字列,_後文字列) :- 候補文字列長さならび(_候補文字列長さならび), [_最長候補文字列長さ|_] = _候補文字列長さならび, 文字列から最長一致法を用いて語候補を検索する(_文字列,_候補文字列長さならび,_最長候補文字列長さ,_前文字列,_適合文字列,_後文字列). 文字列から最長一致法を用いて語候補を検索する(_文字列,_候補文字列長さならび,_最長候補文字列長さ,_前文字列,_適合文字列,_後文字列) :- sub_atom(_文字列,_開始位置,_長さ,_残り長さ,_適合文字列_1), _長さ =< _最長候補文字列長さ, 文字列の長さと候補文字列を得る(_文字列,_候補文字列長さならび,_長さ,_適合文字列_1,_適合文字列_1_2), 前文字列と後文字列を得る(_文字列,_開始位置,_長さ,_残り長さ,_前文字列_1,_後文字列_1), 文字列から最長一致法を用いて語候補を検索する(_候補文字列長さならび,_前文字列_1,_適合文字列_1_2,_後文字列_1,_前文字列,_適合文字列,_後文字列). 文字列から最長一致法を用いて語候補を検索する(_候補文字列長さならび,_前文字列,_適合文字列,_後文字列,_前文字列,_適合文字列,_後文字列). 文字列から最長一致法を用いて語候補を検索する(_候補文字列長さならび,_前文字列_1,_適合文字列_1,_後文字列_1,_前文字列,_適合文字列,_後文字列) :- 文字列から最長一致法を用いて語候補を検索する(_後文字列_1,_候補文字列長さならび,_前文字列_2,_適合文字列,_後文字列), atomic_list_concat([_前文字列_1,_適合文字列_1,_前文字列_2],_前文字列). 候補文字列長さならび(_候補文字列長さならび) :- findall(_長さ,( setof(_長さ,語候補(_長さ,_,_),[_長さ])), _候補文字列長さならび_1), reverse(_候補文字列長さならび_1,_候補文字列長さならび),!. 文字列の長さと候補文字列を得る(_文字列,_候補文字列長さならび,_長さ,_適合文字列_1,_適合文字列_1_2) :- member(_長さ,_候補文字列長さならび), 語候補(_長さ,_適合文字列_1,_適合文字列_1_2). 前文字列と後文字列を得る(_文字列,_開始位置,_長さ,_残り長さ,_前文字列_1,_後文字列_1) :- sub_atom(_文字列,0,_開始位置,_,_前文字列_1), sub_atom(_文字列,_,_残り長さ,0,_後文字列_1). % 以下のサイトは # 出題場所 :: http://toro.2ch.net/test/read.cgi/tech/1357191974/465 # お題:与えられた文字列中の各文字数をカウントして表示せよ。 # 表示順や形式は定めない。 # # 回答例およびチェック用出力例: c # #include <stdio.h> # void check(const char *cs) { # int i, counts[256] = {0}; # for (i = 0; cs[i] != '\0'; i++) counts[cs[i]] += 1; # for (i = 0; i < 256; i++) { # if (counts[i]) printf("'%c'=>%d, ", (char)i, counts[i]); # } # } # int main() { # check("We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris."); # return 0; # } # ↓ # ' '=>16, ','=>2, '.'=>1, ':'=>1, 'W'=>1, 'a'=>7, 'b'=>1, 'c'=>2, 'd'=>2, 'e'=>14 # , 'f'=>1, 'g'=>3, 'h'=>3, 'i'=>6, 'l'=>4, 'm'=>3, 'n'=>4, 'o'=>6, 'p'=>3, 'r'=>8 # , 's'=>4, 't'=>6, 'u'=>4, 'v'=>2, 'w'=>1, 'y'=>1, 'z'=>1, # # '与えられた文字列中の各文字数をカウントして表示せよ。表示順や形式は定めない。'(_文字列,_各文字数のカウント) :- findall(_文字_1,( setof(_文字_1,sub_atom(_文字列,_,1,_,_文字_1),[_文字_1])), _重複のない文字ならび), findall([_文字,_文字数のカウント],( member(_文字,_重複のない文字ならび), カウント(sub_atom(_文字列,_,1,_,_文字),_文字数のカウント)), _各文字数のカウント). カウント(P,_カウント) :- findall(1,P,L), length(L,_カウント). % 以下のサイトは # お題: # 例:数列[3,1,-7,1,5]について、 # ->[4,-3,-2,3] (累計) # ->12 (絶対値の合計) # のように計算する。 # 最初の数列の並び順を変えると、最後の合計計も変わる。 # 任意数列について、上記合計が最小になるように並び替える関数を作成 '例:数列[3,1,-7,1,5]について、 ->[4,-3,-2,3] (累計) ->12 (絶対値の合計) のように計算する。 任意数列について、上記合計が最小になるように並び替える'(_数列,_最小となる数列) :- 絶対値の合計が最小になるように並び替える(_数列,_,_最小となる数列). 絶対値の合計が最小になるように並び替える(_数列,_最小の絶対値,_絶対値の合計が最小となる数列) :- length(_数列,_要素数), setof([_絶対値の合計,_順列], [_数列,_要素数,_順列,_絶対値の合計] ^ 並べ替える(_数列,_要素数,_順列,_絶対値の合計),_絶対値_数列ならび), 絶対値の合計が最小となる数列を得る(_絶対値_数列ならび,_最小の絶対値,_絶対値の合計が最小となる数列). 並べ替える(_数列,_要素数,_順列,_絶対値の合計) :- 順列(_数列,_要素数,_順列), 絶対値の合計(_順列,_絶対値の合計). 絶対値の合計が最小となる数列を得る(_絶対値_数列ならび,_最小の絶対値,_絶対値の合計が最小となる数列) :- findmin(_絶対値,( member([_絶対値,_],_絶対値_数列ならび)), _最小の絶対値), member([_最小の絶対値,_絶対値の合計が最小となる数列],_絶対値_数列ならび). 絶対値の合計([_値],_絶対値の合計) :- _絶対値の合計 is abs(_値),!. 絶対値の合計(_値ならび,_絶対値の合計) :- 累計の途中経過を得る(_値ならび,_累計の途中経過ならび), 要素の絶対値の合計(_累計の途中経過ならび,_絶対値の合計). 累計の途中経過を得る([_],[]). 累計の途中経過を得る([_数_1,_数_2|R1],[_累計の途中経過|R2]) :- _累計の途中経過 is _数_1 + _数_2, 累計の途中経過を得る([_累計の途中経過|R1],R2). 要素の絶対値の合計(_累計の途中経過ならび,_絶対値の合計) :- findsum(_絶対値,( member(_値,_累計の途中経過ならび), _絶対値 is abs(_値)), _絶対値の合計). 順列(_,0,[]). 順列(L1,N,[A|R]) :- select(A,L1,R1), N_1 is N - 1, 順列(R1,N_1,R). findmin(V,P,Min) :- findall(V,P,L), min_list(L,Min). findsum(V,P,Sum) :- findall(V,P,L), sum_list(L,Sum). % 以下のサイトは # # お題:テキストファイルを読み込み、その中で最もよく使われている単語ベスト3を表示するプログラム # 'テキストファイルを読み込み、その中で最もよく使われている単語ベスト3を表示する'(_テキストファイル) :- テキストファイルを読み込み(_テキストファイル,_文), 'その中で最もよく使われている単語ベスト3を表示する'(_文). テキストファイルを読み込み(_テキストファイル,_文) :- get_lines(_テキストファイル,_行ならび), atomic_list_concat(_行ならび,_文). 'その中で最もよく使われている単語ベスト3を表示する'(_文) :- 形態素解析(文,_文,_形態素ならび), 最もよく使われている単語ベスト3を(_形態素ならび,_最もよく使われている単語ベスト3), 表示する(_最もよく使われている単語ベスト3). その中で最もよく使われている単語ベスト3を(_形態素ならび,[_単語1,_単語2,_単語3]) :- setof(A,member(A,_形態素ならび),_単語ならぴ), findall([_度数,_単語],( member(_単語,_単語ならび), count(_単語,_形態素ならび,_度数)), LL), sort(LL,_整列したLL), append(_,[[_,_単語3],[_,_単語2],[_,_単語1]],_整列したLL). 表示する([_単語1,_単語2,_単語3]) :- writef('%t %t %t\n',[_単語1,_単語2,_単語3]). count(P,N) :- findsum(1,P,F), N is truncate(F). findsum(_選択項,_項,_合計値) :- findall(_選択項,_項,_値ならび), sum_list(_値ならび,_合計値),!. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 形態素解析サーバー(mecab). 形態素解析([],[]) :-!. 形態素解析([['EOS'|_]|_],[]) :-!. 形態素解析([[A|_],[@,B|_]|R],[R1_1|R3]) :- 形態素解析_2(R,R1,R2), 形態素解析_2_重複削除([A,B|R1],[],R1_1), 形態素解析(R2,R3),!. 形態素解析([[A|_]|R],[B|R2]) :- 形態素解析サーバー(mecab), make_list(A,['\t'],AL), AL = [B|_], 形態素解析(R,R2),!. 形態素解析([[A|_]|R],[A|R2]) :- 形態素解析サーバー(juman), 形態素解析(R,R2),!. 形態素解析_2([],[],[]) :- !. 形態素解析_2([[A|R1]|R],[],[[A|R1]|R]) :- \+(A = (@)),!. 形態素解析_2([[@,A|_]|R],[A|R2],R3) :- 形態素解析_2(R,R2,R3),!. 形態素解析_2_重複削除([],L1,L) :- reverse(L1,L),!. 形態素解析_2_重複削除([A|R],Y,X) :- member(A,Y), 形態素解析_2_重複削除(R,Y,X),!. 形態素解析_2_重複削除([A|R],Y,X) :- \+(member(A,Y)), 形態素解析_2_重複削除(R,[A|Y],X). 形態素解析(ファイル,_テキストファイル,L) :- 形態素解析サーバー(_形態素解析サーバー), concat(['cat ',_テキストファイル,' | ',_形態素解析サーバー],S), sh(S,L1), 形態素解析(L1,L2), 形態素解析_3(L2,L). 形態素解析(文,S,L) :- tmpnam(_仮のファイル), tell(_仮のファイル), wr('%t',[S]), told, 形態素解析(ファイル,_仮のファイル,L) . 形態素解析_3([],[]). 形態素解析_3([A|R],[A|R2]) :- \+(list(A)), 形態素解析_3(R,R2) . 形態素解析_3([A|R],[B|R2]) :- list(A), member(B,A), 形態素解析_3(R,R2). system(Command,X) :- shell(Command,X). system(Command) :- shell(Command). popen(Command,Chars) :- open(pipe(Command),read,Instream), get_char(Instream,Char), popen(Instream,Char,Chars), close(Instream),!. popen(Instream,end_of_file,[]) :- !. popen(Instream,Char,[Char|R]) :- get_char(Instream,Char2), popen(Instream,Char2,R). sh(Command,X) :- shs(Command,Y), findall(U,( member(V,Y) , split(V,[' ',','],U)), X). shs(Command,X) :- popen(Command,L), shs_3(L,X). shs_3(L,[S|R]) :- append(L0,['\n'|R1],L), atom_chars(S,L0), shs_3(R1,R). shs_3([],[]) :- !. shs_3(L,[S]) :- atom_chars(S,L). tmpnam(TMPNAM) :- 乱数からTMPNAMを得る(TMPNAM),!. tmpnam(TMPNAM) :- tmpnam(TMPNAM). 乱数からTMPNAMを得る(TMPNAM) :- アルファベットに変換([_1,_2,_3,_4,_5,_6]), atomic_list_concat(['/tmp/file'|[_1,_2,_3,_4,_5,_6]],TMPNAM), \+(exists_file(TMPNAM)). アルファベットに変換([]). アルファベットに変換([A|R]) :- C is random(62), アルファベットに変換の二(C,A), アルファベットに変換(R). アルファベットに変換の二(N,A) :- '基数62のコード・アルファベットコード変換表'(S,E,B), between(S,E,N), C is N - S + B, char_code(A,C). '基数62のコード・アルファベットコード変換表'(0,9,48). '基数62のコード・アルファベットコード変換表'(10,35,65). '基数62のコード・アルファベットコード変換表'(36,60,97). % 以下のサイトは # # 目標を限界度数成功させて指定した蒐集項をならびとして得る # 目標を限界度数成功させて指定した蒐集項をならびとして得る(_限界度数,_蒐集項,_目標,_蒐集項ならび) :- findall_n(_限界度数,_蒐集項,_目標,_蒐集項ならび). findall_n(_限界度数,_蒐集項,_目標,_蒐集項ならび) :- message_queue_create(_キュー番号), ( '子スレッドで、生成された度数を、限界度数に達したら0をキューに送る'(_限度度数,_キュー番号); キューから限界度数を示す0を受信するまで目標を成功させて蒐集項ならびを得る(_蒐集項,_目標,_キュー番号,_蒐集項ならび)). キューから限界度数を示す0を受信するまで目標を成功させて蒐集項ならびを得る(_蒐集項,_目標,_キュー番号,_蒐集項ならび) :- findall(_蒐集項,( thread_get_message(_キュー番号,_項), ( _項 = 0,!,fail;call(_目標))), _蒐集項ならび). '子スレッドで、生成された度数を、限界度数に達したら0をキューに送る'(_限度度数,_キュー番号) :- thread_create(度数(_限界度数,_キュー番号),_,[]). 度数(_限界度数,_キュー番号) :- between(1,_限界度数,_度数), _剰余 is _度数 mod ( _限界度数 + 1 ), thread_send_message(_キュー番号,_剰余), _度数 = _限界度数. % % 先にlength/2等で解の枠が決まっている場合があるが、 % findall/3述語だと、その枠を無視して、全解を蒐集して、 % その上で第三引数のならびとの単一化を試みようとする。 % 目標の解が1000万個というように多量の場合は、 % スタックオーバーフローが生じてエラーとなって終了する。 % % これに対して、この述語は子スレッドを作り出して、ここで % 本来は現在の解数を数えさせてキュー経由で親スレッドは % これを受信する。この為には親スレッドから子スレッドに解が % 取れたことを送信するためのキューが必要であるがここでは % それを省略した。子から親への片方向の通信になっている。 % % 子スレッドは1から解の限界数まで整数をキューに一気に詰め、 % さらに、終了の合図である0を詰める。親スレッドは目標が % 達成される度にキューから一つ度数情報を取り出す。 % 解の数が限界数に達した時に子スレッドが既に送信してあった % 0を受信することになり、親スレッドのfindall_n/4の目標内の % カットが発動されて強制的にfindall_n/4を終了させることが % できる。 % % ここではfindall/3を対象にしているがsetof/3やbagof/3も % 全く同様の問題があるし、解決策も同じである。 % 以下のサイトは # # 目標を限界度数成功させて指定した蒐集項をならびとして得る # 目標を限界度数成功させて指定した蒐集項をならびとして得る(_限界度数,_蒐集項,_目標,_蒐集項ならび) :- findall_n(_限界度数,_蒐集項,_目標,_蒐集項ならび). findall_n(_限界度数,_蒐集項,_目標,_蒐集項ならび) :- メッセージキューを生成し番号ならびを詰める(_限界度数,_キュー番号), '目標を実行して蒐集項ならびを得る'(_限界度数,_キュー番号,_蒐集項,_目標,_蒐集項ならび). '目標を実行して蒐集項ならびを得る'(_限界度数,_キュー番号,_蒐集項,_目標,_蒐集項ならび) :- findall(_蒐集項,( call(_目標), thread_get_message(_キュー番号,_項), ( _項 = _限界度数,!,true;true)),_蒐集項ならび). メッセージキューを生成し番号ならびを詰める(_限界度数,_キュー番号) :- message_queue_create(_キュー番号), thread_create(度数(_限界度数,_キュー番号),_,[]). 度数(_限界度数,_キュー番号) :- between(1,_限界度数,_度数), thread_send_message(_キュー番号,_度数), _度数 = _限界度数. % % 先にlength/2等で解の枠が決まっている場合があるが、 % findall/3述語だと、その枠を無視して、全解を蒐集して、 % その上で第三引数のならびとの単一化を試みようとする。 % 目標の解が1000万個というように多量の場合は、 % スタックオーバーフローが生じてエラーとなって終了する。 % % これに対して、この述語は子スレッドを作り出して、ここで % 本来は現在の解数を数えさせてキュー経由で親スレッドは % これを受信する。この為には親スレッドから子スレッドに解が % 取れたことを送信するためのキューが必要であるがここでは % それを省略した。子から親への片方向の通信になっている。 % % 子スレッドは1から解の限界数まで整数をキューに一気に詰める。 % 親スレッドは目標が達成される度にキューから一つ度数情報を % 取り出す。 % 解の数が限界数に達した時に子スレッドが既に送信してあった % 親スレッドのfindall_n/4の目標内のカットが発動されて % それ以後は蒐集せずにfindall_n/4を終了させることができる。 % % ここではfindall/3を対象にしているがsetof/3やbagof/3も % 全く同様の問題があるし、解決策も同じである。 % 以下のサイトは ダイクストラ法による最短距離探索(_出発点,_距離,_最短経路,_確定集合) :- _確定集合_1 = [[_出発点,0,[_出発点]]], 初期の未確定集合を得る(_出発点,_未確定集合), ダイクストラ法による最短距離探索(_確定集合_1,_未確定集合,_確定集合). 初期の未確定集合を得る(_出発点,_初期未確定集合) :- setof([_出発点,9999,[]],[_点,_隣接点,_距離,_出発点] ^ ( 経路(_点,_隣接点,_距離), \+(_点 = _出発点)), _初期未確定集合). ダイクストラ法による最短距離探索(_確定集合,[],_確定集合). ダイクストラ法による最短距離探索([[_直前に確定した点,_距離,_経路]|R],_未確定集合_1,_確定集合) :- 直前に確定した点から全ての隣接点の未確定集合を更新する(_直前に確定した点,_距離,_経路,_未確定集合_1,_未確定集合_2), 未確定集合から最小距離点を抜き取る(_未確定集合_2,_最小距離点,_最小距離,_最小距離点の経路,_未確定集合_3), 確定集合に追加(_最小距離点,_最小距離,_最小経路点の経路,[[_直前に確定した点,_距離,_経路]|R],_確定集合_2), ダイクストラ法による最短距離探索(_確定集合_2,_未確定集合_3,_確定集合). 直前に確定した点から全ての隣接点の未確定集合を更新する(_直前に確定した点,_距離,_経路,_未確定集合_1,_未確定集合_2) :- findall([_隣接点,_距離], 隣接点を得る(_直前に確定した点,_未確定集合,_隣接点,_距離), LL), 直前に確定した点から全ての隣接点の未確定集合を更新する(_直前に確定した点,_距離,_経路,LL,_未確定集合_1,_未確定集合_2). 直前に確定した点から全ての隣接点の未確定集合を更新する(_直前に確定した点,_直前に確定した点までの距離,_直前に確定した点までの経路,[[_隣接点,_距離]|R],_未確定集合_1,_未確定集合_2) :- 未確定集合の更新(_直前に確定した点,_直前に確定した点までの距離,_直前に確定した点までの経路,_隣接点,_距離,_未確定集合_1,_未確定集合_3), 直前に確定した点から全ての隣接点の未確定集合を更新する(_直前に確定した点,_直前に確定した点までの距離,_直前に確定した点までの経路,R,_未確定集合_3,_未確定集合_2). 隣接点を得る(_直前に確定した点,_未確定集合,_隣接点,_距離) :- 経路(_直前に確定した点,_隣接点,_距離), member([_隣接点,_,_],_未確定集合). 未確定集合の更新(_直前に確定した点,_直前に確定した点までの距離,_直前に確定した点までの経路,_隣接点,_距離,_未確定集合_1,_未確定集合_2) :- _距離_2 is _直前に確定した点までの距離 + _距離, append(L1,[[_隣接点,_距離_1,_経路_1]|L2],_未確定集合_1), _距離_1 > _距離_2, append(L1,[[_隣接点,_距離_1,[_隣接点|_直前に確定した点までの経路]]|L2],_未確定集合_2),!. 未確定集合の更新(_,_,_,_,_,_未確定集合,_未確定集合). 未確定集合から最小距離点を抜き取る(_未確定集合_1,_最小距離点,_最小距離,_最小距離点の経路,_未確定集合_2) :- append(L1,[[_最小距離点,_最小距離,_最小距離の経路]|L2],_未確定集合_1), forall(member([_,_距離_1,_],L1),_距離_1 >= _最小距離), forall(member([_,_距離_2,_],L1),_距離_2 >= _最小距離), append(L1,L2,_未確定集合_2),!. 確定集合に追加(_点,_距離,_経路,_確定集合_1,[[_点,_距離,_経路]|_確定集合_1]). % 以下のサイトは # 出題場所:: http://toro.2ch.net/test/read.cgi/db/1343899481/819 # 環境:アクセス2007 # # 得点テーブル # 日 科目 得点 # 1/1 英語 80 # 1/1 国語 50 # 1/1 数学 90 # # 1/2 英語 70 # 1/2 国語 70 # # 1/3 国語 60 # 1/3 数学 80 # # 1/4 英語 60 # 1/4 国語 60 # 1/4 数学 60 # # このようなテーブルから、下記のようにデータを取ってエクセルに張り付けたいのですが # どのようにすればよいでしょうか。 # # 日 英語  国語  数学 # 1/1 80 50 90 # 1/2 70 70 # 1/3 60 80 # 1/4 60 60 60 # # '環境:アクセス2007 得点テーブル 日 科目 得点 1/1 英語 80 1/1 国語 50 1/1 数学 90 1/2 英語 70 1/2 国語 70 1/3 国語 60 1/3 数学 80 1/4 英語 60 1/4 国語 60 1/4 数学 60 このようなテーブルから、下記のようにデータを取ってエクセルに張り付けたいのですが どのようにすればよいでしょうか。 日 英語  国語  数学 1/1 80 50 90 1/2 70 70 1/3 60 80 1/4 60 60 60' :- write('日,英語,国語,数学\n'), 日付ごとに三科目の得点を表示する(R). 日付ごとに三科目の得点を表示する :- forall(日付の選択(_日),三科目の得点を表示する(_日,_英語,_国語,_数学)). 日付の選択(_日) :- setof(_日,[_日,_科目,_得点] ^ 得点テーブル(_日,_科目,_得点),_日ならび), member(_日,_日ならび). 三科目の得点を表示する(_日) :- writef('%t,',[_日]), 英語表示(_日), 国語表示(_日), 数学表示(_日). 英語表示(_日) :- 得点テーブル(_日,英語,_得点), writef('%3r,',[_得点]),!. 英語表示(_日) :- writef('%t,',[' ']). 国語表示(_日) :- 得点テーブル(_日,国語,_得点), writef('%3r,',[_得点]),!. 国語表示(_日) :- writef('%t,',[' ']). 数学表示(_日) :- 得点テーブル(_日,数学,_得点), writef('%3r\n',[_得点]),!. 数学表示(_日) :- writef('%t\n',[' ']). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/747 # # MySQL 5.5.29 # # ┏━┳━━┳━━┓ # ┃no┃.date┃名前┃ # ┣━╋━━╋━━┫ # ┃.1 ┃12-3┃榊  ┃ # ┣━╋━━╋━━┫ # ┃.2 ┃12-3┃山下┃ # ┣━╋━━╋━━┫ # ┃.3 ┃12-3┃斎藤┃ # ┣━╋━━╋━━┫ # ┃.4 ┃12-4┃山下┃ # ┣━╋━━╋━━┫ # ┃.5 ┃12-4┃斎藤┃ # ┗━┻━━┻━━┛ # # result: # no:1 # 名前:榊 # # このようなテーブルデータから、12-4に対して絞込みを行った際、前日に名前があり、当日に名前の消えているデータを抽出したいと思っています。 # 当初は2回SQLを実行しPHPで配列に流しこみそこで比較していたのですが処理の遅さが気になり、どうにかデータベース内で完結出来ないかと思い質問に来ました。 # 宜しくお願いします。 # 'このようなテーブルデータから、12-4に対して絞込みを行った際、前日に名前があり、当日に名前の消えているデータを抽出したい'(_絞込みdate,_名前) :- 前日に名前があり(_絞込みdate,_前日に名前があり), 当日に名前の消えている(_絞込みdate,_前日に名前があり,_当日に名前の消えている), データを抽出したい(_当日に名前の消えている,_名前). 前日に名前があり(_当日,_前日に名前があり) :- findmax(_date,( テーブル(_no,_date,_), _date @< _当日), _事実上の前日), setof(_名前,[_no,_事実上の前日,_名前] ^ ( テーブル(_no,_事実上の前日,_名前)), _前日に名前があり). 当日に名前の消えている(_当日,_前日に名前があり,_当日に名前の消えている) :- setof(_名前,[_no,_当日,_名前] ^ ( member(_名前,_前日に名前があり), \+(テーブル(_no,_当日,_名前))), _当日に名前の消えている). データを抽出したい(_当日に名前の消えている,_名前) :- member(_名前,_当日に名前の消えている). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/705 # # SQL SERVER 2010ですが # TOP 2を求めて残りをその他として合計表示したいです。 # よろしくお願いします。 # # 元のデータ # 列1 # A # A # A # B # B # C # D # # 求めたい結果 # A 3 # B 2 # その他 2 # # 'TOP 2を求めて残りをその他として合計表示したい'(_A,_B,_その他) :- setof(_列1,[_列1] ^ テーブル(_列1),_一意の列1ならび), 'TOP 2を求めて'(_一意の列1ならび,_A,_B,R), '残りをその他として合計表示したい'(R,_その他). 'TOP 2を求めて'(_一意の列1ならび,_A,_B,R) :- findall([_度数,_列1],( member(_列1,_一意の列1ならび), count(テーブル(_列1),_度数)), LL), sort(LL1,LL2), append(R,[_B,_A],LL2). '残りをその他として合計表示したい'(R,_その他) :- findsum(_度数,member([_度数,_],R),_その他). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/684 # # ・DBMS名とバージョン # Oracle 10g # ・テーブルデーた # create table aaa ( # id number(5,0) primary key, -- 主キー # nendo char(4), -- 年度 # tsuki char(2) -- 月 # ); # insert into aaa values (1, '2012', '01'); # insert into aaa values (2, '2012', '02'); # insert into aaa values (3, '2012', '03'); # insert into aaa values (4, '2012', '04'); # insert into aaa values (5, '2012', '05'); # ・欲しい結果 # id, nendo, tsuki # -------------------- # 4, '2012', '04' # 5, '2012', '05, # 1, '2012', '01' # 2, '2012', '02' # 3, '2012', '03' # # ・説明 # 年度/月の昇順に並べたいです。 # 2012年度3月は2013年3月、2012年度4月は2012年4月となるのでただの大小比較では無理でした。 # '・テーブルデータ create table aaa ( id number(5,0) primary key, -- 主キー nendo char(4), -- 年度 tsuki char(2) -- 月 ); insert into aaa values (1, '2012', '01'); insert into aaa values (2, '2012', '02'); insert into aaa values (3, '2012', '03'); insert into aaa values (4, '2012', '04'); insert into aaa values (5, '2012', '05'); ・欲しい結果 id, nendo, tsuki -------------------- 4, '2012', '04' 5, '2012', '05, 1, '2012', '01' 2, '2012', '02' 3, '2012', '03' ・説明 年度/月の昇順に並べたいです。 2012年度3月は2013年3月、2012年度4月は2012年4月となるのでただの大小比較では無理でした。'(_id,_年度,_月) :- 欲しい結果(_id,_年度,_月). 欲しい結果(_id,_年度,_月) :- setof(_年度,[_id,_年度,_月] ^ aaa(_id,_年度,_月),_年度ならび), member(_年度,_年度ならび), 年度順に並べる(['04','05','06','07','08','09','10','11','12','01','02','03'],_id,_年度,_月). 年度順に並べる([_月|R],_id,_年度,_月) :- aaa(_id,_年度,_月). 年度順に並べる([_|R],_id,_年度,_月) :- 年度順に並べる(R,_id,_年度,_月). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/684 # # ・DBMS名とバージョン # Oracle 10g # ・テーブルデーた # create table aaa ( # id number(5,0) primary key, -- 主キー # nendo char(4), -- 年度 # tsuki char(2) -- 月 # ); # insert into aaa values (1, '2012', '01'); # insert into aaa values (2, '2012', '02'); # insert into aaa values (3, '2012', '03'); # insert into aaa values (4, '2012', '04'); # insert into aaa values (5, '2012', '05'); # ・欲しい結果 # id, nendo, tsuki # -------------------- # 4, '2012', '04' # 5, '2012', '05, # 1, '2012', '01' # 2, '2012', '02' # 3, '2012', '03' # # ・説明 # 年度/月の昇順に並べたいです。 # 2012年度3月は2013年3月、2012年度4月は2012年4月となるのでただの大小比較では無理でした。 # '・テーブルデータ create table aaa ( id number(5,0) primary key, -- 主キー nendo char(4), -- 年度 tsuki char(2) -- 月 ); insert into aaa values (1, '2012', '01'); insert into aaa values (2, '2012', '02'); insert into aaa values (3, '2012', '03'); insert into aaa values (4, '2012', '04'); insert into aaa values (5, '2012', '05'); ・欲しい結果 id, nendo, tsuki -------------------- 4, '2012', '04' 5, '2012', '05, 1, '2012', '01' 2, '2012', '02' 3, '2012', '03' ・説明 年度/月の昇順に並べたいです。 2012年度3月は2013年3月、2012年度4月は2012年4月となるのでただの大小比較では無理でした。'(_id,_年度,_月) :- 欲しい結果(_id,_年度,_月). 年度の場合の月順('04','05'). 年度の場合の月順('05','06'). 年度の場合の月順('06','07'). 年度の場合の月順('07','08'). 年度の場合の月順('08','09'). 年度の場合の月順('09','10'). 年度の場合の月順('10','11'). 年度の場合の月順('11','12'). 年度の場合の月順('12','01'). 年度の場合の月順('01','02'). 年度の場合の月順('02','03'). 年度の場合の月順('03','04'). 欲しい結果(_id,_年度,_月) :- setof(_年度,[_id,_年度,_月] ^ aaa(_id,_年度,_月),_年度ならび), member(_年度,_年度ならび), 年度順に並べる('04',_id,_年度,_月). 年度順に並べる(_月,_id,_年度,_月) :- aaa(_id,_年度,_月). 年度順に並べる(_月_1,_id,_年度,_月) :- \+(_月_1 = '03'), 年度の場合の月順(_月,_次の月), 年度順に並べる(_次の月,_id,_年度,_月). % 以下のサイトは # Prolog 21世紀における0〜3の数字を2個ずつ使ってできる年月日の個数 # # 【出典】https://twitter.com/c_oi/status/301346035094126593 # https://twitter.com/c_oi/status/301346039590436864 # 【引用】「0〜3の数字を2個ずつ使ってできる年月日は21世紀(2001/01/01〜2100/12/31)の間に何日間あるでしょう?」 # '21世紀における0〜3の数字を2個ずつ使ってできる年月日の個数'(_個数) :- setof(_年月日ならび,( 重複を許す年月日ならびの選択(_年月日ならび)), LL), length(LL,_個数). 重複を許す年月日ならびの選択(_年月日ならび) :- 順列([0,0,1,1,2,2,3,3],8,_年月日ならび), _年月日ならび @>= [2,0,0,1,0,1,0,1], _年月日ならび @=< [2,1,0,0,1,2,3,1], \+(禁則(_年月日ならび)). 禁則([_,_,_,_,0,2,3,_]) :- !. 禁則([_,_,_,_,2,_,_,_]) :- !. 禁則([_,_,_,_,3,_,_,_]) :- !. 禁則([_,_,_,_,1,3,_,_]) :- !. 禁則([_,_,_,_,_,_,3,3]) :- !. 禁則([_,_,_,_,_,_,3,2]) :- !. 順列(Y,0,[]). 順列(Y,N,[A|X]) :- del(A,Y,Z), M is N - 1, 順列(Z,M,X). del(A,[A|X],X). del(A,[B|X],[B|Y]) :- del(A,X,Y). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/598 # # mysql 5.5 # # テーブル master # tcode # tname # lastdate # 〜 # # daily_data # select tcode,max(tdate) as maxdate # from daily_date # group by tcode; # # このdaily_dateから得られるmaxdateを使って # masterのtcodeの対応するlastdateに入れたいのですが、 # どのようにupdateを書けば良いのでしょうか? # 'daily_dateから得られるmaxdateを使ってmasterのtcodeの対応するlastdateに入れたい' :- dail_dateテーブルの構造(P1,_daily_date_tcode,_date), masterテーブルの構造(P2,_master_tcode,_lastdate), findsetof(_tcode,P1,L1), 最大日付に変更する(L1,P1,P2,_daily_date_tcode,_date,_master_tcode,_lastdate),!. daily_dateテーブルの構造(P,_tcode,_date) :- count(テーブル定義(daily_date,_,_),_アリティ), length(L,_アリティ), P =.. [daily_date|L], tcodeとdateの列位置を確定する(L,_tcode,_date),!. tcodeとdateの列位置を確定する(L,_tcode,_date),!. テーブル定義(daily_date,_nth1_tcode,tcode), テーブル定義(daily_date,_nth1_date,date), nth1(_nth1_tcode,L,_tcode), nth1(_nth1_date,L,_date),!. masterテーブルの構造(P,_tcode,_date) :- count(テーブル定義(master,_,_),_アリティ), length(L,_アリティ), P =.. [master|L], tcodeとlastdateの列位置を確定する(L,_tcode,_lastdate),!. tcodeとlastdateの列位置を確定する(L,_tcode,_date),!. テーブル定義(master,_nth1_tcode,tcode), テーブル定義(master,_nth1_lastdate,lastdate), nth1(_nth1_tcode,L,_tcode), nth1(_nth1_date,L,_lastdate),!. 最大日付に変更する(L1,P1,P2,_daily_date_tcode,_date,_master_tcode,_lastdate) :- forall(( member(_tcode,L1), findmax(_date,P1,_maxdate), lastdateの更新(_maxdate,P2,_tcode,_lastdate)), true). lastdateの更新(_maxdate,P,_tcode,_lastdate) :- retract(P), _lastdate = _maxdate, asserta(P),!. lastdateの更新(_maxdate,P,_tcode,_lastdate) :- _lastdate = _maxdate, asserta(P),!. % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1354070278/102 # # [1] 授業単元:言語処理 # [2] 問題文(含コード&リンク):http://ime.nu/codepad.org/0VyMr7kt # 上記のプログラムを変更して、逆ポーランド記法で記載された式が書かれたテキストファイルを読み込み,計算結果を出力するプログラムを作成せよ. # さらに,各行の内容を字句解析(トークンに分解)し,各要素の個数をカウントした結果を表示するプログラムを作成せよ. # '逆ポーランド記法で記載された式が書かれたテキストファイルを読み込み,計算結果を出力する.さらに,各行の内容を字句解析(トークンに分解)し,各要素の個数をカウントした結果を表示する'(_テキストファイル) :- 逆ポーランド記法で記載された式が書かれたテキストファイルを読み込み(_テキストファイル,_逆ポーランド式ならび), 計算結果を出力する(_逆ポーランド式ならび), 'さらに,各行の内容を字句解析(トークンに分解)し,各要素の個数をカウントした結果を表示する'(_テキストファイル). 逆ポーランド記法で記載された式が書かれたテキストファイルを読み込み(_テキストファイル,_逆ポーランド式ならび) :- get_chars(_テキストファイル,_文字ならび), 数字を値に変換する(_文字ならび,_文字ならび_1), 空白を除去する(_文字ならび_1,_逆ポーランド式ならび). 数字を値に変換する([],[]). 数字を値に変換する([A|R1],[B|R1]) :- 数字ならば数に変換(A,B), 数字を値に変換する(R1,R2),!. 数字を値に変換する([A|R1],[A|R2]) :- 数字を値に変換する(R1,R2). 空白改行などを除去する([],[]). 空白改行などを除去する([A|R1],[A|R1]) :- member(A,[+,-,*,/,0,1,2,3,4,5,6,7,8,9]), 空白改行などを除去する(R1,R2),!. 空白改行などを除去する([_|R1],[_|R2]) :- 空白改行などを除去する(R1,R2). 数字ならば数に変換(A,B) :- A @>= '0', A @=< '9', atom_number(A,B). 計算結果を出力する(_逆ポーランド式ならび) :- 計算結果(_逆ポーランド式ならび,[],_値), writef('%t\n',[_値]). 計算結果([],[_値],_値). 計算結果([N|R1],L1,_値) :- number(N), 計算結果(R1,[N|L1],_値),!. 計算結果([_演算子|R1],[N1,N2|R2],_値) :- 演算(_演算子,N1,N2,N3), 計算結果(R1,[N3|R2],_値). 演算(_演算子,N1,N2,N3) :- F =.. [_演算子,N1,N2], N3 is F. 'さらに,各行の内容を字句解析(トークンに分解)し,各要素の個数をカウントした結果を表示する'(_テキストファイル) :- get_lines(_テキストファイル,Lines), '各行の内容を字句解析(トークンに分解)し,各要素の個数をカウントした結果を表示する'(Lines). '各行の内容を字句解析(トークンに分解)し,各要素の個数をカウントした結果を表示する'(Lines) :- append(_,[_行|R],Lines), '各行の内容を字句解析(トークンに分解)し,各要素の個数をカウントした結果を'(_行), 表示する(_頻度ならび), R = []. '各行の内容を字句解析(トークンに分解)し,各要素の個数をカウントした結果を'(_行,_頻度ならび) :- '各行の内容を字句解析(トークンに分解)し'(_行,_字句ならび), 各要素の個数をカウントした結果を(_字句ならび,_頻度ならび). '各行の内容を字句解析(トークンに分解)し'(_行,_字句ならび) :- sPLIT(_行,[' ','+','-','*','/','1','2','3','4','5','6','7','8','9','0'],L_1), 空白を取り除く(L_1,_字句ならび). 各要素の個数をカウントした結果を(_字句ならび,_頻度ならび) :- setof(_要素,[_要素] ^ member(_要素,_字句ならび),L_1), findall([_頻度,_字句],( member(_字句,L_1), count(member(_字句,_字句ならび),_頻度)),_頻度ならび). 表示する(_頻度ならび) :- append(_,[[_頻度,_字句]|R],_頻度ならび), writef('%t,%t回 ',[_字句,_頻度]), R = [], write('\n'). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/295 # # 複数のデータベースからデータを取り出したいのですが # 似たようなデータが並んでいて、SELECTと同じようにコンマ区切りでやれば・・・と思い、 # SELECT * FROM A,Bと # してみたのですが、取り出せず、 # SELECT * FROM A B # としたのですが、Aのデータしか取り出せません。 # どのようにすれば両方のデータを取り出せるのでしょうか。 # 共通のキーでくっつけるではなく、 # # A あほ # A ばか # A あほ # A あほ # B あほ # B ばか # B ばか # B あほ # # のように取り出したいのです。 # # '複数のデータベースからデータを取り出したいのですが 似たようなデータが並んでいて、SELECTと同じようにコンマ区切りでやれば・・・と思い、 SELECT * FROM A,Bと してみたのですが、取り出せず、 SELECT * FROM A B としたのですが、Aのデータしか取り出せません。 どのようにすれば両方のデータを取り出せるのでしょうか。 共通のキーでくっつけるではなく、 A あほ A ばか A あほ A あほ B あほ B ばか B ばか B あほ のように取り出したいのです。'(_値ならび) :- テーブルの引数ならびを得る(テーブルA,_,_Aの引数ならび), テーブルの引数ならびを得る(テーブルB,_,_Bの引数ならび), テーブルAを取り出す(_Aの引数ならび,_Aを取り出す条件,_値ならび), テーブルBを取り出す(_Bの引数ならび,_Bを取り出す条件,_値ならび). テーブルAを取り出す(_引数ならび,_取り出す条件,_値ならび) :- P =.. [テーブルA|_引数ならび], call(P), call(_取り出す条件). テーブルBを取り出す(_引数ならび,_取り出す条件,_値ならび) :- P =.. [テーブルB|_引数ならび], call(P), call(_取り出す条件). テーブルの引数ならびを得る(_テーブル名,_属性名ならび,_引数ならび) :- setof([_属性位置,_属性名,_],[_テーブル名,_属性位置,_属性名] ^ ( テーブル構造(_テーブル名,_属性位置,_属性名)),LL), 第二要素のみ取り出す(LL,_属性名ならび), 第三要素のみ取り出す(LL,_引数ならび). 第二要素のみ取り出す([],[]). 第二要素のみ取り出す([[_,A|_]|R1],[A|R2]) :- 第二要素のみ取り出す(R1,R2). 第三要素のみ取り出す([],[]). 第三要素のみ取り出す([[_,_,A|_]|R1],[A|R2]) :- 第三要素のみ取り出す(R1,R2). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/281 # # SQL Server 2000においてです。 # # テーブルのフィールドに電話番号、携帯番号、FAX とあった場合、これらから例えば"0123"と検索するのに # Or で接続する以外に検索する方法はありますか? # # 普通?に考えれば以下の方になるかと思いますが、これを簡易的?にインデックスが利く状態で書き換えたい。 # > SELECT * # > FROM Tablehoge # > WHERE (電話番号="0123") OR (携帯番号="0123") OR (FAX="0123") # # なので以下の様なものは却下になります。 # > SELECT * # > FROM Tablehoge # > WHERE "|" & 電話番号 & "|" & 携帯番号 & "|" & FAX & "|" Like "*|0123|*" # # 'テーブルのフィールドに電話番号、携帯番号、FAX とあった場合、これらから例えば"0123"と検索するのにOr による遅い検索'(_電話番号,_携帯番号,_FAX) :- setof([_電話番号,_携帯番号,_FAX],[_電話番号,_携帯番号,_FAX] ^ ( 'Or による遅い検索'(_電話番号,_携帯番号,_FAX)),LL), member([_電話番号,_携帯番号,_FAX],LL). 'Or による遅い検索'(_電話番号,_携帯番号,_FAX) :- テーブル(_電話番号,_携帯番号,_FAX), sub_atom(_電話番号,_,4,_,'0123'). 'Or による遅い検索'(_電話番号,_携帯番号,_FAX) :- テーブル(_電話番号,_携帯番号,_FAX), sub_atom(_携帯番号,_,4,_,'0123'). 'Or による遅い検索'(_電話番号,_携帯番号,_FAX) :- テーブル(_電話番号,_携帯番号,_FAX), sub_atom(_Fax,_,4,_,'0123'). 'テーブルのフィールドに電話番号、携帯番号、FAX とあった場合、これらから例えば"0123"と検索するのにOr で検索する'(_電話番号,_携帯番号,_FAX) :- テーブル(_電話番号,_携帯番号,_FAX), 'Orで検索する'(_電話番号,_携帯番号,_FAX). 'Orで検索する'(_電話番号,_携帯番号,_FAX) :- sub_atom(_電話番号,_,4,_'0123'),!. 'Orで検索する'(_電話番号,_携帯番号,_FAX) :- sub_atom(_携帯番号,_,4,_'0123'),!. 'Orで検索する'(_電話番号,_携帯番号,_FAX) :- sub_atom(_Fax,_,4,_'0123'). 'テーブルのフィールドに電話番号、携帯番号、FAX とあった場合、これらから例えば"0123"と検索するのにOr 以外で検索する'(_電話番号,_携帯番号,_FAX) :- テーブル(_電話番号,_携帯番号,_FAX), 'Or以外で検索する'(_電話番号,_携帯番号,_FAX). 'Or以外で検索する'(_電話番号,_携帯番号,_FAX) :- atomic_list_concat([_電話番号,_携帯番号,_FAX],S), sub_atom(S,_,4,_,'0123'),!. % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/271 # # Oracle11gR2で # # ID  Count # 1 3 # 2 2 # 3 3 # # こういうデータを元に # # Seq ID # 1 1 # 2 1 # 3 1 # 4 2 # 5 2 # 6 3 # 7 3 # 8 3 # # こんな感じのCount(*)の逆を作りたいけど、PL/SQL使わずに作るには、どうしたらいい? # Seqはなくてもいい # 'ID  Count 1 3 2 2 3 3 こういうデータを元に Seq ID 1 1 2 1 3 1 4 2 5 2 6 3 7 3 8 3 こんな感じのCount(*)の逆を作りたいけど、PL/SQL使わずに作るには、どうしたらいい?'(_テーブル名,_Seq,_ID) :- 実行項の生成(_テーブル名,_ID,_実行項), 'IDごとのカウントを取る'(_ID,_実行項,_ID_頻度ならび), sort(_ID_頻度ならび,_整列した_ID_頻度ならび), 'Seq組を生成'(1,_整列した_ID_頻度ならび,_Seq,_ID). 実行項の生成(_テーブル名,_ID,_実行項) :- findmax(Nth1,テーブル定義(_テーブル名,Nth1,_),_組の要素数), length(L,_組の要素数), _実行項 =.. [_テーブル名|L], テーブル定義(_テーブル名,_IDの位置,'ID'), nth1(_IDの位置,L,_ID). 'IDごとのカウントを取る'(_ID,_実行項,_ID_頻度ならび) :- setof(_ID,[_ID,_実行項] ^_実行項,_IDならび), findall([_ID,_頻度],( member(_ID,_IDならび), count(_実行項,_頻度ならび)),_ID_頻度ならび). 'Seq組を生成'(N_1,[[_ID,_頻度]|R],_Seq,_ID) :- N_2 is N_1 + _頻度 - 1, between(N_1,N_2,_Seq). 'Seq組を生成'(N_1,[[_ID,_頻度]|R],_Seq,_ID) :- N_2 is N_1 + _頻度, 'Seq組を生成'(N_2,R,_Seq,_ID). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/209 # # MySQLの初歩的な質問です # # テーブル名y2010 主キー 場所 # # 場所 人口 # ---------------- # 東京 1500 # 大阪 800 # 福岡  500 #  ・・・ # # テーブル名 y2011 主キー 場所 # # 場所 人口 # ---------------- # 東京 1600 # 大阪 900 # 福岡  600 # # のようなテーブルがあるときに、 # # テーブル名 y_sum 主キー 場所 # # 場所 人口 # ---------------- # 東京 3100 # 大阪 1700 # 福岡 1100 # # のように、複数のテーブルから主キーを含むフィールドを参照して # 参照した或るフィールドの値の和を代入したフィールドをもつテーブルを新たに作成するには # どのようなクエリにすればよいのでしょうか? # # おねがいしますm(._.)m おねがい # :- dynamic(y_sum/2). '複数のテーブルから主キーを含むフィールドを参照して参照した或るフィールドの値の和を代入したフィールドをもつテーブルを新たに作成する' :- setof(_場所,[_場所] ^ 場所(_場所),_場所ならび), append(_,[_場所|R],_場所ならび), 人口の合計(_場所,_人口の合計), assertz(y_sum(_場所,_人口の合計)), R = []. 場所(_場所) :- y2010(_場所,_). 場所(_場所) :- y2011(_場所,_). 人口(_場所,_人口) :- y2010(_場所,_人口). 人口(_場所,_人口) :- y2011(_場所,_人口). 人口の合計(_場所,_人口の合計) :- findsum(_人口,人口(_場所,_人口),_人口の合計). % 以下のサイトは # [1] プログラミング # [2] 50円切手が 5 枚, 80円切手が 4 枚, 120円切手が 3 枚あるとき, キーボードから金額 t を入力し, 金額の合計がちょうど t 円になるような切手の枚数の組合せを求めるプログラムを作成せよ. # # 次のような出力が得られることを確認せよ (表示形式は各自工夫せよ). # o 310円 → 50円×3枚+80円×2枚+120円×0枚 # o 390円 → 50円×3枚+80円×0枚+120円×2枚, 50円×3枚+80円×3枚+120円×0枚 # [3] 環境 #  [3.1] winXP sp2 #  [3.2] cygwin #  [3.3] C # [4] 2006年10月23日23時59分 # [5] 途中までやったんで埋める形でお願いします # 途中までやったぶんは次書きます '50円切手が 5 枚, 80円切手が 4 枚, 120円切手が 3 枚あるとき, キーボードから金額 t を入力し, 金額の合計がちょうど t 円になるような切手の枚数の組合せを求めて、これを表示する. ' :- 'キーボードから金額 t を入力し'(_金額t), '50円切手が 5 枚, 80円切手が 4 枚, 120円切手が 3 枚あるとき, キーボードから金額 t を入力し, 金額の合計がちょうど t 円になるような切手の枚数の組合せを求める'(_金額t,_切手枚数の組合せならび), 組合せを表示する(_金額t,_切手枚数の組合せならび). '50円切手が 5 枚, 80円切手が 4 枚, 120円切手が 3 枚あるとき, キーボードから金額 t を入力し, 金額の合計がちょうど t 円になるような切手の枚数の組合せを求める. '(_金額t,_切手枚数の組合せならび) :- setof([_50円切手の枚数,_80円切手の枚数,_120円切手の枚数], [_金額t,_50円切手の枚数,_80円切手の枚数,_120円切手の枚数] ^ 組合せ合計が金額tと一致する(_金額t,_50円切手の枚数,_80円切手の枚数,_120円切手の枚数)),_切手枚数の組合せならび). 'キーボードから金額 t を入力し'(_金額t) :- 整数を得る('金額t ',_金額t > 0,_金額t). 組合せ合計が金額tと一致する(_金額t,_50円切手の枚数,_80円切手の枚数,_120円切手の枚数) :- 組合せ合計が金額tと一致する(_L,_金額t), 組合せ枚数を数える(L,_50円切手の枚数,_80円切手の枚数,_120円切手の枚数). 組合せ合計が金額tと一致する(_L,_金額t) :- between(1,12,N), 組合せ([50,50,50,50,80,80,80,80,120,120,120],N,L), sum_list(L,_金額t), 組合せ枚数を数える(L,_50円切手の枚数,_80円切手の枚数,_120円切手の枚数) :- 度数(member(50,L),_50円切手の枚数), 度数(member(80,L),_80円切手の枚数), 度数(member(120,L),_120円切手の枚数). 組合せを表示する(_,[]) :- write('切手の組合せは作れません\n'). 組合せを表示する(_金額t,_切手枚数の組合せならび) :- forall(append(_,[[_50円切手の枚数,_80円切手の枚数,_120円切手の枚数]|R],_切手枚数の組合せならび), writef('%w -> 50円切手×%w枚+80円切手×%w枚+120円切手×%w枚\n',[_金額t,_50円切手の枚数,_80円切手の枚数,_120円切手の枚数])). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 組合せ(L,1,[A]) :- member(A,L). 組合せ([A|R1],N,[A|R2]) :- 'Nを1減らして残り要素の組合せ'(R1,N,R2). 組合せ([_|R1],N,R2) :- 'Nはそのままで残り要素の組合せ'(R1,N,R2). 'Nを1減らして残り要素の組合せ'(R1,N,R2) :- N > 1, succ(N_1,N), 組合せ(R1,N_1,R2). 'Nはそのままで残り要素の組合せ'(R1,N,R2) :- N > 1, 組合せ(R1,N,R2). 度数(P,_度数) :- findall(1,P,L), length(L,_度数). 行入力(_行) :- read_line_to_codes(current_input,Codes), atom_codes(_行,Codes). 整数を得る(_催促文,_条件,_整数) :- '催促文の表示後、入力された行を整数に変換し、条件を実行する'(_催促文,_条件,_整数),!. 整数を得る(_催促文,_条件,_整数) :- 整数入力に失敗した時は再試行する(_催促文,_条件,_整数). 整数入力に失敗した時は再試行する(_催促文,_条件,_整数) :- 整数を得る(_催促文,_条件,_整数). '催促文の表示後、入力された行を整数に変換し、条件を実行する'(_催促文,_条件,_整数) :- '催促文の表示後、入力された行を整数に変換し、'(_催促文,_行,_整数), 条件を実行する(_行,_整数,_条件). '催促文の表示後、入力された行を整数に変換し、'(_催促文,_行,_整数) :- 催促文の表示(_催促文), 行入力(_行), 整数入力検査(_行,_整数). 催促文の表示(_催促文) :- writef('%w',[_催促文]). 整数入力検査(_行,_整数) :- 行を解析して整数を得る(_行,_整数). 整数入力検査(_行,_) :- 整数を得られなかったらそのことを表示してfail(_行). 行を解析して整数を得る(_行,_整数) :- 行を解析して(_行,_整数), それが整数であることを確認する(_整数). 行を解析して(_行,_整数) :- catch(read_term_from_atom(_行,_整数,[]),E,fail). それが整数であることを確認する(_整数) :- integer(_整数). 整数を得られなかったらそのことを表示してfail(_行) :- writef('入力された行 %w からは整数が得られませんでした。再入力をお願いします。\n',[_行]), fail. 条件を実行する(_行,_整数,_条件) :- catch(_条件,E,fail). 条件を実行する(_行,_整数,_条件) :- writef('%w から得た整数 %w は、条件 %w を満たしません。再入力をお願いします。\n',[_行,_整数,_条件]), fail. % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1343899481/205 # # MS SQL server 2012です。 # TableA # 商品名 製造数 # A 1000 # B 2000 # C 1000 # # TableB # 商品名 単価 # A 100 # A 120 # B 90 # C 120 # C 125 # # TableBには同一商品名で複数の単価が登録されています。 # TableBの商品名毎の一番高い単価を基にして # TableAの製造数 x 単価を求めたいのですが # 一発で出す方法有りましたら教えてください。 # # 得たい結果 # A 12000 # B 18000 # C 12500 # # 'TableBには同一商品名で複数の単価が登録されています。 TableBの商品名毎の一番高い単価を基にしてTableAの製造数 x 単価を求める'(_商品名,_金額) :- setof(_商品名,[_商品名,_単価] ^ ( テーブルB(_商品名,_単価)),_商品名ならび), 'TableBの商品名毎の一番高い単価を基にしてTableAの製造数 x 単価を求める'(_商品名ならび,_商品名,_金額). 'TableBの商品名毎の一番高い単価を基にしてTableAの製造数 x 単価を求める'([_商品名|R1],_商品名,_金額) :- findmax(_単価,( テーブルB(_商品名,_単価)), _一番高い単価), テーブルA(_商品名,_製造数), _金額 is _一番高い単価 * _製造数. 'TableBの商品名毎の一番高い単価を基にしてTableAの製造数 x 単価を求める'([_|R1],_商品名,_金額) :- 'TableBの商品名毎の一番高い単価を基にしてTableAの製造数 x 単価を求める'(R1,_商品名,_金額). % 以下のサイトは # 出典::SQL質疑応答スレ 13問目 #154 # Oracle10g # # 企業TBL # 1:企業ID # 2:企業名 # 3:電話番号 # 4:最終発送日 # # 上記のようなテーブルがあり、同一企業でも # 複数のレコードに登録されています。 # 電話番号が同一であれば、同一企業とみなし、 # 最終発送日を同一企業内で最新の日付で # 一斉更新したいのですが、プログラムを使わず # SQL文だけで完結することは可能でしょうか? # # 下記のSQLで表示される電話番号のデータを # MAX(最終発送日)で更新するイメージです。 # # SELECT 電話番号,MAX(最終発送日),COUNT(*) # FROM 企業TBL # GROUP BY 電話番号 # HAVING COUNT(*) > 1; # '同一企業でも複数のレコードに登録されています。電話番号が同一であれば、同一企業とみなし、最終発送日を同一企業内で最新の日付で一斉更新したい' :- 電話番号ならびを得る(_電話番号ならび), 電話番号_最終発送日ならび(_電話番号ならび,_電話番号_最終発送日ならび), 最終発送日の更新(_電話番号_最終発送日ならび). 電話番号ならびを得る(_電話番号ならび) :- setof(_電話番号,[_企業ID,_企業名,_電話番号,_最終発送日] ^ ( 企業TBL(_企業ID,_企業名,_電話番号,_最終発送日)),_電話番号ならび). 電話番号_最終発送日ならび(_電話番号ならび,_電話番号_最終発送日ならび) :- findall([_電話番号,_最終発送日],( member(_電話番号,_電話番号ならび), 最終発送日(_電話番号,_最終発送日)),_電話番号_最終発送日ならび). 最終発送日(_電話番号,_最終発送日) :- findmax(_最終発送日,( 企業TBL(_企業ID,_企業名,_電話番号,_最終発送日)),_最終発送日). 最終発送日の更新(_電話番号_最終発送日ならび) :- forall(member([_電話番号,_最終発送日],_電話番号_最終発送日ならび), 最終発送日の更新(_電話番号,_最終発送日)). 最終発送日の更新(_電話番号,_最終発送日) :- 電話番号を鍵に企業データを削除(_電話番号), assertz(企業TBL(_企業ID,_企業名,_電話番号,_最終発送日)). 電話番号を鍵に企業データを削除(_電話番号) :- retract(企業TBL(_企業ID,_企業名,_電話番号,_最終発送日_1)), fail. 電話番号を鍵に企業データを削除(_電話番号). findmax(A,B,C) :- findall(A,B,L), 最大値(L,C). 最大値(L,_最大値) :- select(_最大値,L,R), forall(member(A,R),_最大値 @>= A). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1342966104/526 # # 【質問テンプレ】 # [1] 授業単元: プログラミング演習 # [2] 問題文 # 巡回セールスマン問題の厳密解を総当たり法で求めるプログラムを、再帰呼び出しを用いて作成せよ # (例)  1  2  3  4  5  6 #   1 0 470 550 420 300 200 #   2 470 0 800 900 770 560 #   3 550 800 0 330 650 750 #   4 420 900 330 0 450 400 #   5 300 770 650 450 0 180 #   6 200 560 750 400 180 0 # 隣接(東京,埼玉,50). 隣接(埼玉,東京,50). 隣接(埼玉,群馬,80). 隣接(群馬,埼玉,80). 隣接(群馬,栃木,60). 隣接(栃木,群馬,60). 隣接(栃木,茨木,65). 隣接(茨木,栃木,65). 隣接(茨木,千葉,65). 隣接(千葉,茨木,65). 隣接(千葉,東京,20). 隣接(東京,千葉,20). 隣接(埼玉,茨木,90). 隣接(茨木,埼玉,90). '巡回セールスマン問題の厳密解を総当たり法で求めるプログラムを、再帰呼び出しを用いて作成せよ'(_出発都市,LL) :- setof(_都市,[_都市,_隣接都市,_距離] ^ ( 隣接(_都市,_隣接都市,_距離)),_都市ならび), length(_都市ならび,_都市数), '巡回セールスマン問題の厳密解を総当たり法で求める'(_都市数,_出発都市,[],LL). '巡回セールスマン問題の厳密解を総当たり法で求める'(_都市数,_出発都市,LL,LL) :- setof(_都市_2,[_都市,_都市_2,_距離,LL] ^ ( member([_都市,_都市_2,_距離],LL)),LL2), length(LL2,_都市数). '巡回セールスマン問題の厳密解を総当たり法で求める'(_都市数,_出発都市,L1,L) :- 隣接(_出発都市,_隣接都市,_距離), \+(member([_出発都市,_隣接都市,_],L1)), \+(member([_隣接都市,_出発都市,_],L1)), '巡回セールスマン問題の厳密解を総当たり法で求める'(_都市数,_隣接都市,[[_出発都市,_隣接都市,_距離]|L1],L). % 以下のサイトは # 出典 :: SQL質疑応答スレ 12問目 #984 # ・SQL Server2008R2Express # テーブルデータ # ・2012-08-01 11:35:00, りんご, 1 # ・2012-08-01 16:22:00, みかん, 2 # ・2012-08-02 13:54:00, りんご, 2 # ・2012-08-02 14:32:00, りんご, 1 # ・2012-08-04 16:22:00, みかん, 3 # # ・欲しい結果 # 2012-08-01 # 2012-08-02 # 2012-08-04 # # ・説明 # 件数に関係なく売り上げがあった日だけのリストが欲しいのですが # うまい方法あるでしょうか # # 売上('2012-08-01 11:35:00', りんご, 1 ). 売上('2012-08-01 16:22:00', みかん, 2 ). 売上('2012-08-02 13:54:00', りんご, 2 ). 売上('2012-08-02 14:32:00', りんご, 1 ). 売上('2012-08-04 16:22:00', みかん, 3 ). 件数に関係なく売り上げがあった日(_売上のあった日) :- 件数に関係なく売り上げがあった日だけのリスト(_売上のあった日だけのリスト), member(_売上のあった日,_売上のあった日だけのリスト). 件数に関係なく売り上げがあった日だけのリスト(_売上のあった日だけのリスト) :- setof(_年月日,[_年月日] ^ 売上のあった日(_年月日),_売上のあった日だけのリスト). 売上のあった日(_年月日) :- 売上(_日付時刻,_品名,_件数), _件数 > 0, 日付時刻から年月日を切り取る(_日付時刻,_年月日). 日付時刻から年月日を切り取る(_日付時刻,_年月日) :- sub_atom(_日付時刻,0,10,_,_年月日). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1339338438/924 # # [1] 授業単元:C言語 # [2] 問題文: # 学生の英語、国語、数学の合計の得点データを処理するために、次のようなデータ型と名前のメンバを持つSCORE型構造体を考える。 # 学籍番号:整数型 number # 氏名:文字型 name[20] # 英語得点:整数型 eigo # 国語得点:整数型 kokugo # 数学得点:整数型 sugaku # 合計得点:整数型 goukei # SCORE型の2つの構造体変数x1,x2を宣言せよ。 # そしてキーボードから番号、氏名、各教科の得点を入力すると英語、国語、数学の3教科の合計点が計算され、合計点の高い方の学生の氏名と合計点が出力されるプログラムを作成せよ。 # <データ例> # 変数 番号 氏名 英語得点 国語得点 数学得点 # x1  1  nakashima 75  80    75 # x2  2  takada  77   82    70 # <出力列> # nakashima 230 # 'キーボードから番号、氏名、各教科の得点を入力すると英語、国語、数学の3教科の合計点が計算され、合計点の高い方の学生の氏名と合計点が出力される' :- 'キーボードから番号、氏名、各教科の得点を入力すると', '英語、国語、数学の3教科の合計点が計算され'(_合計点_番号ならび), '合計点の高い方の学生の氏名と合計点が出力される'(_合計点_番号ならび). 'キーボードから番号、氏名、各教科の得点を入力すると' :- 一人分の成績を定義する, 'キーボードから番号、氏名、各教科の得点を入力すると'. 'キーボードから番号、氏名、各教科の得点を入力すると'. 一人分の成績を定義する :- 番号を得る(_番号), 氏名を得る(_氏名), 各教科の得点を得る(_英語得点,_国語得点,_数学得点), 成績を定義する(_番号,_氏名,_英語得点,_国語得点,_数学得点). 番号を得る(_番号) :- 整数を得る(番号,_番号),!, \+(_番号==0). 氏名を得る(_氏名) :- write('氏名を入力してください : '), get_line(_氏名). 各教科の得点を得る(_英語得点,_国語得点,_数学得点) :- 整数を得る(英語得点,_英語得点), 整数を得る(国語得点,_国語得点), 整数を得る(数学得点,_数学得点). 成績を定義する(_番号,_氏名,_英語得点,_国語得点,_数学得点) :- 変数xxを得る(_XX), 成績を定義する(XX,_番号,_氏名,_英語得点,_国語得点,_数学得点). 成績を定義する(XX,_番号,_氏名,_英語得点,_国語得点,_数学得点) :- assertz(成績(_XX,番号,_番号)), assertz(成績(_XX,氏名,_氏名)), assertz(成績(_XX,英語成績,_英語成績)), assertz(成績(_XX,国語成績,_国語成績)), assertz(成績(_XX,数学成績,_数学成績)),!. 変数xxを得る(_XX) :- N is random(99999999) + 1, 整数から文字列(8,N,A), atomic_list_concat([x,A],_XX), \+(成績(_XX,番号,_)),!. 変数xxを得る(_XX) :- 変数xxを得る(_XX). '英語、国語、数学の3教科の合計点が計算され'(_合計点_変数番号ならび) :- setof(_XX,[_XX,_番号] ^ ( 成績(_XX,番号,_番号)),_XXならび), findall([_合計点,_XX],( member(_XX,_XXならび), 合計点を計算する(_XX,_合計点)),_合計点_変数番号ならび). 合計点を計算する(_XX,_合計点) :- 成績(_XX,英語成績,_英語成績), 成績(_XX,国語成績,_国語成績), 成績(_XX,数学成績,_数学成績), _合計点 is _英語成績 + _国語成績 + _数学成績. '合計点の高い方の学生の氏名と合計点が出力される'(_合計点_番号ならび) :- sort(_合計点_番号ならび,_整列された合計点_番号ならび), reverse(_整列された合計点_番号ならび,_降順に整列された合計点_番号ならび), _整列された合計点_番号ならび = [[_合計点,_XX]|_], 成績(_XX,氏名,_氏名), writef('合計点が高い方は %t で合計点 %t 点です。\n',[_氏名,_合計点]). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/911 # # 【質問テンプレ】 # ・SQLite3 # ・テーブル # id,unixtime # 100001,1341404056 # 100001,1341997094 # 100001,1341987930 # 100002,1341997860 # 100002,1341989037 # # ・欲しい結果 # 100001,1341997094 # 100002,1341997860 # # ・説明 # 上記テーブルでid毎にunixtimeが一番大きいデータを1つだけ取り出すには # どのようなクエリでできるでしょうか。1回では無理でしょうか。 # # id,unixtime,value # "1" "1341404056" "内容1" # "1" "1341997094" "内容2" # "1" "1341987930" "内容3" # "2" "1341997860" "内容1" # "2" "1341989037" "内容2" # '上記テーブルでid毎にunixtimeが一番大きいデータを1つだけ取り出す'(_id,_unixtime,_value) :- setof(_id,[_id,_unixtime,_value] ^ ( テーブル(_id,_unixtime,_value)),L1), member(_id,L1), findmax([_unixtime,_id,_value],( テーブル(_id,_unixtime,_value)),[_unixtime,_id,_value]). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/900 # # テーブル名:PRODUCT # # CODE, PRODUCT_NAME, M_Type # 001,パソコン,01 # 002,パソコン NEC,01 # 003,パソコン FUJITSU,01 # 004,パソコン,01 # 005,パソコン,02 # 006,プリンター,03 # ・・・ # # とあるとき # # # PRODUCT_NAMEの重複するデータを抽出するにはどうしたらいいでしょうか? # # 001,パソコン,01 # 004,パソコン,01 # 005,パソコン,02 # # が出て欲しい # # # PRODUCT_NAMEかつM_Typeも一緒のデータを抽出するにはどうしたらいいでしょうか? # # 001,パソコン,01 # 004,パソコン,01 # # が出て欲しい # # お願いします。 # 'PRODUCT_NAMEの重複するデータを抽出する'(_CODE,_PRODUCT_NAME,_M_Type) :- setof([_PRODUCT_NAME,_M_Type],[_CODE,_PRODUCT_NAME,_M_Type] ^ ( 'PRODUCT'(_CODE,_PRODUCT_NAME,_M_Type)),L1), findall([_PRODUCT_NAME,_M_Type],( member(_PRODUCT_NAME,L1), count('PRODUCT'(_CODE,_PRODUCT_NAME,_M_Type),COUNT), COUNT >= 2),L2), member([_PRODUCT_NAME,_M_Type],L2), 'PRODUCT'(_CODE,_PRODUCT_NAME,_M_Type). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/900 # # テーブル名:PRODUCT # # CODE, PRODUCT_NAME, M_Type # 001,パソコン,01 # 002,パソコン NEC,01 # 003,パソコン FUJITSU,01 # 004,パソコン,01 # 005,パソコン,02 # 006,プリンター,03 # ・・・ # # とあるとき # # # PRODUCT_NAMEの重複するデータを抽出するにはどうしたらいいでしょうか? # # 001,パソコン,01 # 004,パソコン,01 # 005,パソコン,02 # # が出て欲しい # # # PRODUCT_NAMEかつM_Typeも一緒のデータを抽出するにはどうしたらいいでしょうか? # # 001,パソコン,01 # 004,パソコン,01 # # が出て欲しい # # お願いします。 # 'PRODUCT_NAMEの重複するデータを抽出する'(_CODE,_PRODUCT_NAME,_M_Type) :- setof(_PRODUCT_NAME,[_CODE,_PRODUCT_NAME,_M_Type] ^ ( 'PRODUCT'(_CODE,_PRODUCT_NAME,_M_Type)),L1), findall(_PRODUCT_NAME,( member(_PRODUCT_NAME,L1), count('PRODUCT'(_CODE,_PRODUCT_NAME,_M_Type),COUNT), COUNT >= 2),L2), member(_PRODUCT_NAME,L2), 'PRODUCT'(_CODE,_PRODUCT_NAME,_M_Type). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/881 # # 入庫、出庫、締め用のテーブルがあるとし、それぞれ、HEADER、DETAILがあり # HEADERには、入出庫、締め番号、日付、ACTIVE(該当月Y/N)など # DETAILには、アイテムと数量が入っているとします # そこでDAILY MOVEMENTを作成したいのですが、 # 1~31のように固定ではなく、トランザクションがあった日のみ、つまり # SELECT TRANS_DATE FROM # (SELECT TRANS_DATE FROM INCOMING WHERE ACTIVE='Y' # UNION ALL # SELECT TRANS_DATE FROM OUTGOING WHERE ACTIVE='Y') T_DATE # group by TRANS_DATE ORDER BY 1 # でTRANS_DATE抽出しておきます # 結果をREPORT WRITEとかWEBを用いずに # TRANS_DATEが横方向に1行目に表され、 # 2行目1カラムは、アイテム、2カラム目はOPENING数量で、 # 3カラム以降はIN又はOUTの数量を表記したいのですが # JUL/8はトランザクションがありませんので表記されていません # 最後のカラムは、その月の現在までのSUMMARY # #   JUL/7  JUL/9           JUL # IN OUT IN OUT IN OUT CLOSE #    3 5   3 3 8  15 # # みなさんなら、どうSQLを書きますか、教えてください # # % % 入庫(_入出庫,_締め番号,_日付,_ACTIVE,_アイテム,_数量). % % 出庫(_入出庫,_締め番号,_日付,_ACTIVE,_アイテム,_数量). % % 締め用(_入出庫,_締め番号,_日付,_ACTIVE,_アイテム,_数量). % みなさんならどう書きますか :- 重複のない入出庫日付ならび(_重複のない入出庫日付ならび), 表を作成する(_重複のない入出庫日付ならび,_表), '入庫・出庫・締め用数量合計'(_入庫数量合計,_出庫数量合計,_締め用数量合計), 転置(_表,_転置された表), 表を出力する(_転置された表,_入庫数量合計,_出庫数量合計,_締め用数量合計). 重複のない入出庫日付ならび(_重複のない入出庫日付ならび) :- setof(_日付_1,[_入出庫,_締め番号,_日付,_ACTIVE,_アイテム,_数量] ^ ( 入庫(_入出庫,_締め番号,_日付_1,'Y',_アイテム,_数量)),_入庫日付ならび), setof(_日付_2,[_入出庫,_締め番号,_日付,_ACTIVE,_アイテム,_数量] ^ ( 出庫(_入出庫,_締め番号,_日付_2,'Y',_アイテム,_数量)),_出庫日付ならび), append(_入庫日付ならび,_出庫日付ならび,_入出庫日付ならび), setof(_日付,member(_日付,_入出庫日付ならび),_重複のない入出庫日付ならび). 表を作成する(_重複のない入出庫日付ならび,_表) :- findall([_日付,_入庫数量,_出庫数量],( member(_日付,_重複のない入出庫日付ならぴ), 入庫数量を得る(_日付,_入庫数量), 出庫数量を得る(_日付,_出庫数量), 表示パターン(_入庫数量,_出庫数量,_表示パターン)), _表). 入庫数量を得る(_日付,_入庫数量) :- 入庫(_入出庫,_締め番号,_日付,'Y',_アイテム,_入庫数量),!. 入庫数量を得る(_日付,0.0). 出庫数量を得る(_日付,_出庫数量) :- 入庫(_入出庫,_締め番号,_日付,'Y',_アイテム,_出庫数量),!. 出庫数量を得る(_日付,0.0). '入庫・出庫・締め用数量合計'(_入庫数量合計,_出庫数量合計,_締め用数量合計) :- findsum(_数量,( 入庫(_入出庫,_締め番号,_日付,'Y',_アイテム,_数量)), _入庫数量合計), findsum(_数量,( 出庫(_入出庫,_締め番号,_日付,'Y',_アイテム,_数量)), _出庫数量合計), findsum(_数量,( 締め用(_入出庫,_締め番号,_日付,'Y',_アイテム,_数量)), _締め用数量合計). 表示パターン(_入庫数量,0.0,1) :- \+(_入庫数量 = 0.0),!. 表示パターン(0.0,_出庫数量,2) :- \+(_出庫数量 = 0.0),!. 表示パターン(_,_,3). 表を出力する([_日付ならび,_パターンならび,_入庫数量ならび,_出庫数量ならび],_入庫数量合計,_出庫数量合計,_締め用数量合計) :- 日付を表示する(_日付ならび), '入庫・出庫・合計見出し'(_パターンならび), 数量ならびを表示する(_入庫数量ならび,_出庫数量ならび), '入庫数量合計・出庫数量合計・締め用数量合計表示'(_入庫数量合計,_出庫数量合計,_締め用数量合計). 日付を表示する([]) :- write('\n'). 日付を表示する([_日付|R]) :- 日付表示文字列(_日付,_日付表示文字列), write('%12c',[_日付表示文字列]), 日付を表示する(R). 日付表示文字列(_日付,_日付表示文字列) :- sub_atom(_日付,4,2,_月), sub_atom(_日付,6,2,_日), atomic_list_concat([_月,'/',_日],_日付表示文字列). '入庫・出庫・合計見出し'([]) :- writef(' 入庫 出庫 締め用 \n'). '入庫・出庫・合計見出し'([_パターン|R]) :- '入庫・出庫・合計見出し表示文字列'(_パターン,_表示文字列), writef('%t',[_表示文字列]), '入庫・出庫・合計見出し'(R). '入庫・出庫・合計見出し表示文字列'(1,' 入庫 '). '入庫・出庫・合計見出し表示文字列'(2,' 出庫 '). '入庫・出庫・合計見出し表示文字列'(3,' 入庫 出庫 '). 数量ならびの表示([]) :- 数量ならびを表示する([_入庫|R1],[_出庫|R2]) :- 数量表示文字列(_入庫数量,_出庫数量,_入庫表示文字列,_出庫表示文字列), writef(' %t %t ',[_入庫表示文字列,_出庫表示文字列]), 数量ならびを表示する(R1,R2). 数量表示文字列(0.0,_出庫数量,' ',_出庫表示文字列) :- swritef(_出荷表示文字列,' %4r ',[_出庫数量]),!. 数量表示文字列(0.0,_入庫数量,_入庫表示文字列,' ') :- swritef(_入庫表示文字列,' %4r ',[_入庫数量]),!. 数量表示文字列(_入荷数量,_出庫数量,_入庫数量文字列,_出庫表示文字列) :- swritef(_入庫表示文字列,' %4r ',[_入庫数量]), swritef(_出庫表示文字列,' %4r ',[_出庫数量]),!. '入庫数量合計・出庫数量合計・締め用数量合計表示'(_入庫数量合計,_出庫数量合計,_締め用数量合計) :- writef(' %4r %4r %4r\n',[_入庫数量合計,_出庫数量合計,_締め用数量合計]). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/816 # # table1 # id | name # ----------- # 0 | りんご # 1 | みかん # # table2 # no | id # ---------- # 0 | 0 # 1 | 0 # 2 | 1 # 3 | 1 # 4 | 1 # # この二つのテーブルから以下の結果を得るSQLの書き方を教えてください # id | name | num # ------------------- # 0 | りんご | 2 # 1 | みかん | 3 # # select id, name, (select count(code) from table2 as t2, table1 as t1 where t1.id=t2.code) as num from table1; # 自分で考えた↑では2行ともnumが5になってしまいました # # SELECT id, COUNT(id) # FROM table2 # GROUP BY id # # の結果と table1 を結合 # table1(0,りんご). table1(1,みかん). table2(0,0). table2(1,0). table2(2,1). table2(3,1). table2(4,1). 'table2をidで集約したテーブルにtable1を結合する'(_id,_name,_度数) :- setof(_id,[_no,_id] ^ ( table2(_no,_id)),_idならび), member(_id,_idならび), count(table2(_,_id),_度数), table1(_id,_name). % findsetof/3 % count/2 % 以下のサイトは # 出典 :: SQL質疑応答スレ 12問目 #773 # ・DBMS名とバージョン: Access2003 # ・テーブルデータ: ID、作業開始日、作業完了日、作業区分 # ・欲しい結果 #  一定期間の作業開始日及び作業完了日を日付別にカウントしたい。 # ・説明 # 例えば、2012/06/01から2012/06/07の期間を指定した場合、以下の様に取得したい。 # # 日付     作業開始 作業完了 # 2012/06/01    10      10 # 2012/06/02     5      5 # 2012/06/03    20      15 # 2012/06/04    21      20 # 2012/06/05     7      10 # 2012/06/06    10      15 # 2012/06/07     4      10 # # '一定期間の作業開始及び作業完了を日付別に作業開始・終了度数を得る'(_期間日下限,_期間日上限,_日付,_作業開始度数,_作業終了度数) :- 一定期間の作業開始及び作業完了を(_期間日下限,_期間日上限,_日付ならび), '日付別に作業開始・終了度数を得る'(_日付ならび,_日付,_作業開始度数,_作業終了度数). 一定期間の作業開始及び作業完了を(_期間日下限,_期間日上限,_日付ならび) :- setof(_日付,[_ID,_作業開始日,_作業完了日,_作業区分,_期間日下限,_期間日上限,_日付] ^ ( テーブルデータの作業開始日か作業完了日が期間内(_期間日下限,_期間日上限,_作業開始日,_作業完了日,_日付)),_日付ならび). テーブルデータの作業開始日か作業完了日が期間内(_期間日下限,_期間日上限,_作業開始日,_作業完了日,_日付) :- テーブルデータ(_ID,_作業開始日,_作業完了日,_作業区分), 作業開始日か作業完了日が期間内(_期間日下限,_期間日上限,_作業開始日,_作業完了日,_日付). 作業開始日か作業完了日が期間内(_期間日下限,_期間日上限,_作業開始日,_作業完了日,_作業開始日) :- _作業開始日 @>= _期間日下限, _作業開始日 @=< _期間日上限. 作業開始日か作業完了日が期間内(_期間日下限,_期間日上限,_作業開始日,_作業完了日,_作業完了日) :- _作業完了日 @>= _期間日下限, _作業完了日 @=< _期間日上限. '日付別に作業開始・終了度数を得る'(_日付ならび,_日付,_作業開始度数,_作業終了度数) :- 日付別に(_日付ならび,_日付), '作業開始・終了度数を得る'(_日付,_作業開始度数,_作業終了度数). 日付別に(_日付ならび,_日付) :- member(_日付,_日付ならび). '作業開始・終了度数を得る'(_日付,_作業開始度数,_作業終了度数) :- 度数(テーブルデータ(_,_日付,_,_),_作業開始度数), 度数(テーブルデータ(_,_,_日付,_),_作業終了度数). 度数(_目標,_度数) :- findall(1,_目標,L), length(L,_度数). テーブルデータ(1,'20120401','20120517','A'). テーブルデータ(2,'20120401','20120528','A'). テーブルデータ(3,'20120401','20120526','A'). テーブルデータ(4,'20120401','20120524','A'). テーブルデータ(5,'20120401','20120526','A'). テーブルデータ(6,'20120401','20120517','A'). テーブルデータ(7,'20120401','20120413','A'). テーブルデータ(8,'20120401','20120410','A'). テーブルデータ(9,'20120401','20120402','A'). テーブルデータ(10,'20120401','20120403','A'). テーブルデータ(11,'20120401','20120408','A'). テーブルデータ(12,'20120401','20120521','A'). テーブルデータ(13,'20120401','20120420','A'). テーブルデータ(14,'20120401','20120424','A'). テーブルデータ(15,'20120402','20120402','A'). テーブルデータ(16,'20120402','20120408','A'). テーブルデータ(17,'20120402','20120524','A'). テーブルデータ(18,'20120402','20120418','A'). テーブルデータ(19,'20120402','20120413','A'). テーブルデータ(20,'20120402','20120410','A'). テーブルデータ(21,'20120402','20120429','A'). テーブルデータ(22,'20120402','20120411','A'). テーブルデータ(23,'20120402','20120404','A'). テーブルデータ(24,'20120402','20120522','A'). テーブルデータ(25,'20120402','20120404','A'). テーブルデータ(26,'20120402','20120515','A'). テーブルデータ(27,'20120402','20120409','A'). テーブルデータ(28,'20120402','20120527','A'). テーブルデータ(29,'20120402','20120501','A'). テーブルデータ(30,'20120402','20120514','A'). テーブルデータ(31,'20120402','20120514','A'). テーブルデータ(32,'20120403','20120502','A'). テーブルデータ(33,'20120403','20120430','A'). テーブルデータ(34,'20120403','20120416','A'). テーブルデータ(35,'20120403','20120419','A'). テーブルデータ(36,'20120403','20120504','A'). テーブルデータ(37,'20120403','20120425','A'). テーブルデータ(38,'20120403','20120412','A'). テーブルデータ(39,'20120403','20120506','A'). テーブルデータ(40,'20120403','20120424','A'). テーブルデータ(41,'20120403','20120601','A'). テーブルデータ(42,'20120403','20120517','A'). テーブルデータ(43,'20120403','20120510','A'). テーブルデータ(44,'20120403','20120511','A'). テーブルデータ(45,'20120403','20120517','A'). テーブルデータ(46,'20120403','20120508','A'). テーブルデータ(47,'20120403','20120503','A'). テーブルデータ(48,'20120403','20120526','A'). テーブルデータ(49,'20120403','20120519','A'). テーブルデータ(50,'20120403','20120504','A'). テーブルデータ(51,'20120404','20120530','A'). テーブルデータ(52,'20120404','20120507','A'). テーブルデータ(53,'20120404','20120406','A'). テーブルデータ(54,'20120404','20120524','A'). テーブルデータ(55,'20120404','20120420','A'). テーブルデータ(56,'20120404','20120405','A'). テーブルデータ(57,'20120404','20120519','A'). テーブルデータ(58,'20120404','20120519','A'). テーブルデータ(59,'20120404','20120518','A'). テーブルデータ(60,'20120404','20120501','A'). テーブルデータ(61,'20120404','20120530','A'). テーブルデータ(62,'20120404','20120409','A'). テーブルデータ(63,'20120404','20120520','A'). テーブルデータ(64,'20120404','20120413','A'). テーブルデータ(65,'20120404','20120417','A'). テーブルデータ(66,'20120404','20120421','A'). テーブルデータ(67,'20120404','20120428','A'). テーブルデータ(68,'20120404','20120419','A'). テーブルデータ(69,'20120404','20120516','A'). テーブルデータ(70,'20120404','20120519','A'). テーブルデータ(71,'20120404','20120418','A'). テーブルデータ(72,'20120405','20120419','A'). テーブルデータ(73,'20120405','20120519','A'). テーブルデータ(74,'20120405','20120408','A'). テーブルデータ(75,'20120405','20120525','A'). テーブルデータ(76,'20120405','20120412','A'). テーブルデータ(77,'20120405','20120523','A'). テーブルデータ(78,'20120405','20120511','A'). テーブルデータ(79,'20120405','20120513','A'). テーブルデータ(80,'20120405','20120413','A'). テーブルデータ(81,'20120405','20120429','A'). テーブルデータ(82,'20120405','20120408','A'). テーブルデータ(83,'20120405','20120416','A'). テーブルデータ(84,'20120405','20120419','A'). テーブルデータ(85,'20120405','20120424','A'). テーブルデータ(86,'20120405','20120417','A'). テーブルデータ(87,'20120405','20120405','A'). テーブルデータ(88,'20120405','20120531','A'). テーブルデータ(89,'20120405','20120523','A'). テーブルデータ(90,'20120405','20120424','A'). テーブルデータ(91,'20120405','20120527','A'). テーブルデータ(92,'20120405','20120521','A'). テーブルデータ(93,'20120405','20120411','A'). テーブルデータ(94,'20120405','20120529','A'). テーブルデータ(95,'20120405','20120603','A'). テーブルデータ(96,'20120405','20120420','A'). テーブルデータ(97,'20120405','20120415','A'). テーブルデータ(98,'20120405','20120419','A'). テーブルデータ(99,'20120405','20120602','A'). テーブルデータ(100,'20120406','20120427','A'). テーブルデータ(101,'20120406','20120423','A'). テーブルデータ(102,'20120406','20120408','A'). テーブルデータ(103,'20120406','20120602','A'). テーブルデータ(104,'20120406','20120418','A'). テーブルデータ(105,'20120406','20120528','A'). テーブルデータ(106,'20120406','20120601','A'). テーブルデータ(107,'20120406','20120407','A'). テーブルデータ(108,'20120406','20120426','A'). テーブルデータ(109,'20120406','20120502','A'). テーブルデータ(110,'20120406','20120407','A'). テーブルデータ(111,'20120406','20120521','A'). テーブルデータ(112,'20120406','20120505','A'). テーブルデータ(113,'20120406','20120410','A'). テーブルデータ(114,'20120406','20120604','A'). テーブルデータ(115,'20120406','20120516','A'). テーブルデータ(116,'20120406','20120415','A'). テーブルデータ(117,'20120406','20120527','A'). テーブルデータ(118,'20120407','20120603','A'). テーブルデータ(119,'20120407','20120418','A'). テーブルデータ(120,'20120407','20120428','A'). テーブルデータ(121,'20120407','20120512','A'). テーブルデータ(122,'20120407','20120416','A'). テーブルデータ(123,'20120407','20120414','A'). テーブルデータ(124,'20120407','20120504','A'). テーブルデータ(125,'20120407','20120423','A'). テーブルデータ(126,'20120408','20120511','A'). テーブルデータ(127,'20120408','20120414','A'). テーブルデータ(128,'20120408','20120413','A'). テーブルデータ(129,'20120408','20120524','A'). テーブルデータ(130,'20120408','20120501','A'). テーブルデータ(131,'20120408','20120606','A'). テーブルデータ(132,'20120408','20120522','A'). テーブルデータ(133,'20120408','20120506','A'). テーブルデータ(134,'20120408','20120529','A'). テーブルデータ(135,'20120408','20120510','A'). テーブルデータ(136,'20120408','20120507','A'). テーブルデータ(137,'20120408','20120411','A'). テーブルデータ(138,'20120408','20120606','A'). テーブルデータ(139,'20120408','20120508','A'). テーブルデータ(140,'20120408','20120526','A'). テーブルデータ(141,'20120408','20120506','A'). テーブルデータ(142,'20120408','20120513','A'). テーブルデータ(143,'20120408','20120518','A'). テーブルデータ(144,'20120409','20120515','A'). テーブルデータ(145,'20120409','20120502','A'). テーブルデータ(146,'20120409','20120517','A'). テーブルデータ(147,'20120409','20120504','A'). テーブルデータ(148,'20120409','20120505','A'). テーブルデータ(149,'20120409','20120530','A'). テーブルデータ(150,'20120409','20120410','A'). テーブルデータ(151,'20120409','20120514','A'). テーブルデータ(152,'20120409','20120607','A'). テーブルデータ(153,'20120409','20120507','A'). テーブルデータ(154,'20120410','20120418','A'). テーブルデータ(155,'20120410','20120411','A'). テーブルデータ(156,'20120410','20120530','A'). テーブルデータ(157,'20120410','20120423','A'). テーブルデータ(158,'20120410','20120520','A'). テーブルデータ(159,'20120410','20120424','A'). テーブルデータ(160,'20120410','20120414','A'). テーブルデータ(161,'20120410','20120504','A'). テーブルデータ(162,'20120410','20120514','A'). テーブルデータ(163,'20120410','20120527','A'). テーブルデータ(164,'20120410','20120605','A'). テーブルデータ(165,'20120410','20120413','A'). テーブルデータ(166,'20120410','20120531','A'). テーブルデータ(167,'20120410','20120527','A'). テーブルデータ(168,'20120410','20120505','A'). テーブルデータ(169,'20120411','20120427','A'). テーブルデータ(170,'20120411','20120602','A'). テーブルデータ(171,'20120411','20120422','A'). テーブルデータ(172,'20120411','20120428','A'). テーブルデータ(173,'20120411','20120509','A'). テーブルデータ(174,'20120411','20120516','A'). テーブルデータ(175,'20120411','20120528','A'). テーブルデータ(176,'20120411','20120604','A'). テーブルデータ(177,'20120411','20120412','A'). テーブルデータ(178,'20120411','20120519','A'). テーブルデータ(179,'20120412','20120511','A'). テーブルデータ(180,'20120412','20120519','A'). テーブルデータ(181,'20120412','20120427','A'). テーブルデータ(182,'20120412','20120425','A'). テーブルデータ(183,'20120412','20120520','A'). テーブルデータ(184,'20120412','20120420','A'). テーブルデータ(185,'20120412','20120415','A'). テーブルデータ(186,'20120412','20120602','A'). テーブルデータ(187,'20120412','20120530','A'). テーブルデータ(188,'20120412','20120421','A'). テーブルデータ(189,'20120412','20120607','A'). テーブルデータ(190,'20120412','20120416','A'). テーブルデータ(191,'20120412','20120525','A'). テーブルデータ(192,'20120412','20120525','A'). テーブルデータ(193,'20120412','20120604','A'). テーブルデータ(194,'20120412','20120520','A'). テーブルデータ(195,'20120412','20120508','A'). テーブルデータ(196,'20120412','20120522','A'). テーブルデータ(197,'20120412','20120416','A'). テーブルデータ(198,'20120412','20120609','A'). テーブルデータ(199,'20120412','20120530','A'). テーブルデータ(200,'20120412','20120530','A'). テーブルデータ(201,'20120412','20120421','A'). テーブルデータ(202,'20120412','20120608','A'). テーブルデータ(203,'20120412','20120429','A'). テーブルデータ(204,'20120412','20120518','A'). テーブルデータ(205,'20120413','20120416','A'). テーブルデータ(206,'20120413','20120513','A'). テーブルデータ(207,'20120413','20120506','A'). テーブルデータ(208,'20120413','20120602','A'). テーブルデータ(209,'20120413','20120611','A'). テーブルデータ(210,'20120413','20120604','A'). テーブルデータ(211,'20120413','20120418','A'). テーブルデータ(212,'20120413','20120417','A'). テーブルデータ(213,'20120413','20120513','A'). テーブルデータ(214,'20120413','20120418','A'). テーブルデータ(215,'20120413','20120611','A'). テーブルデータ(216,'20120413','20120427','A'). テーブルデータ(217,'20120413','20120529','A'). テーブルデータ(218,'20120413','20120422','A'). テーブルデータ(219,'20120413','20120415','A'). テーブルデータ(220,'20120414','20120528','A'). テーブルデータ(221,'20120414','20120521','A'). テーブルデータ(222,'20120414','20120511','A'). テーブルデータ(223,'20120414','20120429','A'). テーブルデータ(224,'20120414','20120418','A'). テーブルデータ(225,'20120414','20120422','A'). テーブルデータ(226,'20120414','20120425','A'). テーブルデータ(227,'20120414','20120416','A'). テーブルデータ(228,'20120414','20120601','A'). テーブルデータ(229,'20120414','20120612','A'). テーブルデータ(230,'20120414','20120417','A'). テーブルデータ(231,'20120414','20120530','A'). テーブルデータ(232,'20120414','20120422','A'). テーブルデータ(233,'20120415','20120507','A'). テーブルデータ(234,'20120415','20120426','A'). テーブルデータ(235,'20120415','20120425','A'). テーブルデータ(236,'20120415','20120530','A'). テーブルデータ(237,'20120415','20120416','A'). テーブルデータ(238,'20120415','20120416','A'). テーブルデータ(239,'20120415','20120515','A'). テーブルデータ(240,'20120415','20120612','A'). テーブルデータ(241,'20120415','20120420','A'). テーブルデータ(242,'20120415','20120415','A'). テーブルデータ(243,'20120415','20120610','A'). テーブルデータ(244,'20120416','20120422','A'). テーブルデータ(245,'20120416','20120528','A'). テーブルデータ(246,'20120416','20120421','A'). テーブルデータ(247,'20120416','20120424','A'). テーブルデータ(248,'20120416','20120502','A'). テーブルデータ(249,'20120417','20120525','A'). テーブルデータ(250,'20120417','20120531','A'). テーブルデータ(251,'20120417','20120613','A'). テーブルデータ(252,'20120417','20120529','A'). テーブルデータ(253,'20120417','20120531','A'). テーブルデータ(254,'20120417','20120417','A'). テーブルデータ(255,'20120417','20120523','A'). テーブルデータ(256,'20120417','20120519','A'). テーブルデータ(257,'20120417','20120615','A'). テーブルデータ(258,'20120417','20120526','A'). テーブルデータ(259,'20120417','20120427','A'). テーブルデータ(260,'20120417','20120425','A'). テーブルデータ(261,'20120417','20120428','A'). テーブルデータ(262,'20120418','20120429','A'). テーブルデータ(263,'20120418','20120509','A'). テーブルデータ(264,'20120418','20120428','A'). テーブルデータ(265,'20120418','20120501','A'). テーブルデータ(266,'20120419','20120529','A'). テーブルデータ(267,'20120419','20120422','A'). テーブルデータ(268,'20120419','20120508','A'). テーブルデータ(269,'20120419','20120530','A'). テーブルデータ(270,'20120419','20120617','A'). テーブルデータ(271,'20120419','20120505','A'). テーブルデータ(272,'20120419','20120528','A'). テーブルデータ(273,'20120419','20120522','A'). テーブルデータ(274,'20120419','20120502','A'). テーブルデータ(275,'20120419','20120606','A'). テーブルデータ(276,'20120419','20120608','A'). テーブルデータ(277,'20120419','20120613','A'). テーブルデータ(278,'20120419','20120515','A'). テーブルデータ(279,'20120419','20120515','A'). テーブルデータ(280,'20120419','20120602','A'). テーブルデータ(281,'20120420','20120430','A'). テーブルデータ(282,'20120421','20120527','A'). テーブルデータ(283,'20120421','20120602','A'). テーブルデータ(284,'20120421','20120527','A'). テーブルデータ(285,'20120421','20120428','A'). テーブルデータ(286,'20120421','20120605','A'). テーブルデータ(287,'20120421','20120527','A'). テーブルデータ(288,'20120421','20120510','A'). テーブルデータ(289,'20120421','20120509','A'). テーブルデータ(290,'20120421','20120607','A'). テーブルデータ(291,'20120421','20120523','A'). テーブルデータ(292,'20120421','20120519','A'). テーブルデータ(293,'20120421','20120612','A'). テーブルデータ(294,'20120421','20120530','A'). テーブルデータ(295,'20120421','20120430','A'). テーブルデータ(296,'20120421','20120616','A'). テーブルデータ(297,'20120422','20120603','A'). テーブルデータ(298,'20120422','20120608','A'). テーブルデータ(299,'20120422','20120428','A'). テーブルデータ(300,'20120422','20120513','A'). テーブルデータ(301,'20120422','20120505','A'). テーブルデータ(302,'20120422','20120504','A'). テーブルデータ(303,'20120422','20120423','A'). テーブルデータ(304,'20120422','20120616','A'). テーブルデータ(305,'20120422','20120620','A'). テーブルデータ(306,'20120422','20120511','A'). テーブルデータ(307,'20120422','20120513','A'). テーブルデータ(308,'20120422','20120605','A'). テーブルデータ(309,'20120422','20120511','A'). テーブルデータ(310,'20120422','20120523','A'). テーブルデータ(311,'20120422','20120512','A'). テーブルデータ(312,'20120422','20120608','A'). テーブルデータ(313,'20120422','20120427','A'). テーブルデータ(314,'20120422','20120609','A'). テーブルデータ(315,'20120422','20120608','A'). テーブルデータ(316,'20120422','20120611','A'). テーブルデータ(317,'20120422','20120516','A'). テーブルデータ(318,'20120423','20120423','A'). テーブルデータ(319,'20120423','20120427','A'). テーブルデータ(320,'20120423','20120515','A'). テーブルデータ(321,'20120423','20120522','A'). テーブルデータ(322,'20120423','20120618','A'). テーブルデータ(323,'20120423','20120424','A'). テーブルデータ(324,'20120423','20120523','A'). テーブルデータ(325,'20120423','20120606','A'). テーブルデータ(326,'20120423','20120614','A'). テーブルデータ(327,'20120423','20120505','A'). テーブルデータ(328,'20120423','20120525','A'). テーブルデータ(329,'20120423','20120612','A'). テーブルデータ(330,'20120423','20120518','A'). テーブルデータ(331,'20120423','20120607','A'). テーブルデータ(332,'20120423','20120425','A'). テーブルデータ(333,'20120423','20120512','A'). テーブルデータ(334,'20120423','20120602','A'). テーブルデータ(335,'20120423','20120425','A'). テーブルデータ(336,'20120423','20120531','A'). テーブルデータ(337,'20120423','20120615','A'). テーブルデータ(338,'20120423','20120531','A'). テーブルデータ(339,'20120423','20120612','A'). テーブルデータ(340,'20120423','20120517','A'). テーブルデータ(341,'20120423','20120612','A'). テーブルデータ(342,'20120423','20120522','A'). テーブルデータ(343,'20120423','20120514','A'). テーブルデータ(344,'20120423','20120601','A'). テーブルデータ(345,'20120423','20120509','A'). テーブルデータ(346,'20120423','20120505','A'). テーブルデータ(347,'20120424','20120508','A'). テーブルデータ(348,'20120424','20120428','A'). テーブルデータ(349,'20120424','20120622','A'). テーブルデータ(350,'20120424','20120523','A'). テーブルデータ(351,'20120424','20120527','A'). テーブルデータ(352,'20120424','20120619','A'). テーブルデータ(353,'20120424','20120524','A'). テーブルデータ(354,'20120424','20120618','A'). テーブルデータ(355,'20120424','20120603','A'). テーブルデータ(356,'20120424','20120516','A'). テーブルデータ(357,'20120424','20120622','A'). テーブルデータ(358,'20120424','20120428','A'). テーブルデータ(359,'20120424','20120507','A'). テーブルデータ(360,'20120424','20120519','A'). テーブルデータ(361,'20120424','20120604','A'). テーブルデータ(362,'20120424','20120501','A'). テーブルデータ(363,'20120424','20120607','A'). テーブルデータ(364,'20120424','20120507','A'). テーブルデータ(365,'20120424','20120425','A'). テーブルデータ(366,'20120424','20120508','A'). テーブルデータ(367,'20120424','20120430','A'). テーブルデータ(368,'20120424','20120602','A'). テーブルデータ(369,'20120424','20120428','A'). テーブルデータ(370,'20120424','20120516','A'). テーブルデータ(371,'20120424','20120516','A'). テーブルデータ(372,'20120424','20120520','A'). テーブルデータ(373,'20120425','20120426','A'). テーブルデータ(374,'20120425','20120606','A'). テーブルデータ(375,'20120425','20120612','A'). テーブルデータ(376,'20120425','20120612','A'). テーブルデータ(377,'20120425','20120613','A'). テーブルデータ(378,'20120425','20120616','A'). テーブルデータ(379,'20120425','20120612','A'). テーブルデータ(380,'20120425','20120513','A'). テーブルデータ(381,'20120425','20120513','A'). テーブルデータ(382,'20120425','20120531','A'). テーブルデータ(383,'20120425','20120612','A'). テーブルデータ(384,'20120425','20120508','A'). テーブルデータ(385,'20120425','20120503','A'). テーブルデータ(386,'20120425','20120428','A'). テーブルデータ(387,'20120425','20120508','A'). テーブルデータ(388,'20120426','20120504','A'). テーブルデータ(389,'20120426','20120526','A'). テーブルデータ(390,'20120426','20120619','A'). テーブルデータ(391,'20120426','20120503','A'). テーブルデータ(392,'20120426','20120502','A'). テーブルデータ(393,'20120426','20120504','A'). テーブルデータ(394,'20120426','20120505','A'). テーブルデータ(395,'20120426','20120516','A'). テーブルデータ(396,'20120426','20120502','A'). テーブルデータ(397,'20120426','20120613','A'). テーブルデータ(398,'20120426','20120513','A'). テーブルデータ(399,'20120426','20120525','A'). テーブルデータ(400,'20120426','20120506','A'). テーブルデータ(401,'20120426','20120608','A'). テーブルデータ(402,'20120427','20120430','A'). テーブルデータ(403,'20120427','20120514','A'). テーブルデータ(404,'20120427','20120619','A'). テーブルデータ(405,'20120427','20120618','A'). テーブルデータ(406,'20120427','20120503','A'). テーブルデータ(407,'20120427','20120611','A'). テーブルデータ(408,'20120427','20120529','A'). テーブルデータ(409,'20120427','20120513','A'). テーブルデータ(410,'20120427','20120621','A'). テーブルデータ(411,'20120427','20120505','A'). テーブルデータ(412,'20120427','20120623','A'). テーブルデータ(413,'20120427','20120506','A'). テーブルデータ(414,'20120427','20120513','A'). テーブルデータ(415,'20120427','20120427','A'). テーブルデータ(416,'20120428','20120519','A'). テーブルデータ(417,'20120428','20120428','A'). テーブルデータ(418,'20120428','20120611','A'). テーブルデータ(419,'20120428','20120506','A'). テーブルデータ(420,'20120428','20120505','A'). テーブルデータ(421,'20120428','20120617','A'). テーブルデータ(422,'20120428','20120506','A'). テーブルデータ(423,'20120428','20120514','A'). テーブルデータ(424,'20120428','20120430','A'). テーブルデータ(425,'20120428','20120512','A'). テーブルデータ(426,'20120428','20120624','A'). テーブルデータ(427,'20120428','20120517','A'). テーブルデータ(428,'20120428','20120610','A'). テーブルデータ(429,'20120428','20120626','A'). テーブルデータ(430,'20120428','20120430','A'). テーブルデータ(431,'20120429','20120502','A'). テーブルデータ(432,'20120429','20120519','A'). テーブルデータ(433,'20120429','20120609','A'). テーブルデータ(434,'20120429','20120615','A'). テーブルデータ(435,'20120429','20120517','A'). テーブルデータ(436,'20120429','20120518','A'). テーブルデータ(437,'20120429','20120510','A'). テーブルデータ(438,'20120429','20120603','A'). テーブルデータ(439,'20120429','20120513','A'). テーブルデータ(440,'20120429','20120518','A'). テーブルデータ(441,'20120429','20120531','A'). テーブルデータ(442,'20120429','20120514','A'). テーブルデータ(443,'20120429','20120526','A'). テーブルデータ(444,'20120429','20120523','A'). テーブルデータ(445,'20120429','20120528','A'). テーブルデータ(446,'20120429','20120617','A'). テーブルデータ(447,'20120429','20120523','A'). テーブルデータ(448,'20120429','20120504','A'). テーブルデータ(449,'20120429','20120617','A'). テーブルデータ(450,'20120430','20120624','A'). テーブルデータ(451,'20120430','20120626','A'). テーブルデータ(452,'20120430','20120609','A'). テーブルデータ(453,'20120430','20120627','A'). テーブルデータ(454,'20120430','20120511','A'). テーブルデータ(455,'20120430','20120529','A'). テーブルデータ(456,'20120430','20120509','A'). テーブルデータ(457,'20120430','20120616','A'). テーブルデータ(458,'20120430','20120528','A'). テーブルデータ(459,'20120430','20120512','A'). テーブルデータ(460,'20120430','20120604','A'). テーブルデータ(461,'20120430','20120523','A'). テーブルデータ(462,'20120430','20120524','A'). テーブルデータ(463,'20120430','20120509','A'). テーブルデータ(464,'20120430','20120510','A'). テーブルデータ(465,'20120430','20120611','A'). テーブルデータ(466,'20120430','20120520','A'). テーブルデータ(467,'20120430','20120521','A'). テーブルデータ(468,'20120430','20120509','A'). テーブルデータ(469,'20120430','20120526','A'). テーブルデータ(470,'20120430','20120601','A'). テーブルデータ(471,'20120430','20120610','A'). テーブルデータ(472,'20120430','20120611','A'). テーブルデータ(473,'20120430','20120430','A'). テーブルデータ(474,'20120501','20120504','A'). テーブルデータ(475,'20120501','20120611','A'). テーブルデータ(476,'20120501','20120522','A'). テーブルデータ(477,'20120501','20120510','A'). テーブルデータ(478,'20120501','20120531','A'). テーブルデータ(479,'20120501','20120615','A'). テーブルデータ(480,'20120501','20120626','A'). テーブルデータ(481,'20120501','20120528','A'). テーブルデータ(482,'20120501','20120518','A'). テーブルデータ(483,'20120501','20120624','A'). テーブルデータ(484,'20120501','20120531','A'). テーブルデータ(485,'20120501','20120616','A'). テーブルデータ(486,'20120501','20120505','A'). テーブルデータ(487,'20120501','20120518','A'). テーブルデータ(488,'20120501','20120515','A'). テーブルデータ(489,'20120501','20120509','A'). テーブルデータ(490,'20120501','20120615','A'). テーブルデータ(491,'20120501','20120608','A'). テーブルデータ(492,'20120501','20120602','A'). テーブルデータ(493,'20120501','20120616','A'). テーブルデータ(494,'20120501','20120610','A'). テーブルデータ(495,'20120501','20120507','A'). テーブルデータ(496,'20120501','20120507','A'). テーブルデータ(497,'20120501','20120624','A'). テーブルデータ(498,'20120501','20120517','A'). テーブルデータ(499,'20120501','20120602','A'). テーブルデータ(500,'20120501','20120519','A'). テーブルデータ(501,'20120501','20120619','A'). テーブルデータ(502,'20120502','20120512','A'). テーブルデータ(503,'20120502','20120618','A'). テーブルデータ(504,'20120502','20120512','A'). テーブルデータ(505,'20120502','20120622','A'). テーブルデータ(506,'20120502','20120502','A'). テーブルデータ(507,'20120502','20120513','A'). テーブルデータ(508,'20120502','20120515','A'). テーブルデータ(509,'20120503','20120510','A'). テーブルデータ(510,'20120503','20120604','A'). テーブルデータ(511,'20120503','20120618','A'). テーブルデータ(512,'20120503','20120626','A'). テーブルデータ(513,'20120503','20120627','A'). テーブルデータ(514,'20120503','20120604','A'). テーブルデータ(515,'20120503','20120622','A'). テーブルデータ(516,'20120503','20120515','A'). テーブルデータ(517,'20120504','20120623','A'). テーブルデータ(518,'20120504','20120622','A'). テーブルデータ(519,'20120504','20120513','A'). テーブルデータ(520,'20120504','20120518','A'). テーブルデータ(521,'20120504','20120608','A'). テーブルデータ(522,'20120504','20120614','A'). テーブルデータ(523,'20120504','20120524','A'). テーブルデータ(524,'20120504','20120606','A'). テーブルデータ(525,'20120504','20120531','A'). テーブルデータ(526,'20120504','20120601','A'). テーブルデータ(527,'20120505','20120620','A'). テーブルデータ(528,'20120505','20120515','A'). テーブルデータ(529,'20120505','20120509','A'). テーブルデータ(530,'20120505','20120630','A'). テーブルデータ(531,'20120505','20120701','A'). テーブルデータ(532,'20120505','20120511','A'). テーブルデータ(533,'20120505','20120614','A'). テーブルデータ(534,'20120505','20120623','A'). テーブルデータ(535,'20120505','20120522','A'). テーブルデータ(536,'20120505','20120619','A'). テーブルデータ(537,'20120505','20120524','A'). テーブルデータ(538,'20120505','20120522','A'). テーブルデータ(539,'20120505','20120523','A'). テーブルデータ(540,'20120505','20120510','A'). テーブルデータ(541,'20120505','20120508','A'). テーブルデータ(542,'20120505','20120518','A'). テーブルデータ(543,'20120505','20120612','A'). テーブルデータ(544,'20120505','20120627','A'). テーブルデータ(545,'20120505','20120522','A'). テーブルデータ(546,'20120505','20120514','A'). テーブルデータ(547,'20120505','20120617','A'). テーブルデータ(548,'20120505','20120512','A'). テーブルデータ(549,'20120505','20120523','A'). テーブルデータ(550,'20120505','20120701','A'). テーブルデータ(551,'20120505','20120608','A'). テーブルデータ(552,'20120505','20120625','A'). テーブルデータ(553,'20120505','20120514','A'). テーブルデータ(554,'20120505','20120505','A'). テーブルデータ(555,'20120505','20120524','A'). テーブルデータ(556,'20120506','20120703','A'). テーブルデータ(557,'20120506','20120511','A'). テーブルデータ(558,'20120506','20120623','A'). テーブルデータ(559,'20120506','20120629','A'). テーブルデータ(560,'20120506','20120628','A'). テーブルデータ(561,'20120506','20120612','A'). テーブルデータ(562,'20120506','20120507','A'). テーブルデータ(563,'20120506','20120608','A'). テーブルデータ(564,'20120506','20120524','A'). テーブルデータ(565,'20120507','20120526','A'). テーブルデータ(566,'20120507','20120613','A'). テーブルデータ(567,'20120507','20120526','A'). テーブルデータ(568,'20120507','20120605','A'). テーブルデータ(569,'20120507','20120619','A'). テーブルデータ(570,'20120507','20120529','A'). テーブルデータ(571,'20120507','20120610','A'). テーブルデータ(572,'20120507','20120520','A'). テーブルデータ(573,'20120507','20120514','A'). テーブルデータ(574,'20120507','20120627','A'). テーブルデータ(575,'20120507','20120529','A'). テーブルデータ(576,'20120508','20120627','A'). テーブルデータ(577,'20120508','20120609','A'). テーブルデータ(578,'20120508','20120608','A'). テーブルデータ(579,'20120508','20120525','A'). テーブルデータ(580,'20120508','20120523','A'). テーブルデータ(581,'20120508','20120618','A'). テーブルデータ(582,'20120508','20120525','A'). テーブルデータ(583,'20120508','20120611','A'). テーブルデータ(584,'20120508','20120519','A'). テーブルデータ(585,'20120508','20120515','A'). テーブルデータ(586,'20120508','20120608','A'). テーブルデータ(587,'20120508','20120628','A'). テーブルデータ(588,'20120508','20120509','A'). テーブルデータ(589,'20120509','20120529','A'). テーブルデータ(590,'20120509','20120702','A'). テーブルデータ(591,'20120509','20120628','A'). テーブルデータ(592,'20120509','20120616','A'). テーブルデータ(593,'20120509','20120514','A'). テーブルデータ(594,'20120509','20120510','A'). テーブルデータ(595,'20120509','20120525','A'). テーブルデータ(596,'20120509','20120525','A'). テーブルデータ(597,'20120509','20120531','A'). テーブルデータ(598,'20120509','20120629','A'). テーブルデータ(599,'20120509','20120617','A'). テーブルデータ(600,'20120509','20120704','A'). テーブルデータ(601,'20120509','20120513','A'). テーブルデータ(602,'20120509','20120616','A'). テーブルデータ(603,'20120509','20120618','A'). テーブルデータ(604,'20120509','20120527','A'). テーブルデータ(605,'20120509','20120530','A'). テーブルデータ(606,'20120509','20120608','A'). テーブルデータ(607,'20120510','20120701','A'). テーブルデータ(608,'20120510','20120618','A'). テーブルデータ(609,'20120510','20120706','A'). テーブルデータ(610,'20120510','20120604','A'). テーブルデータ(611,'20120510','20120705','A'). テーブルデータ(612,'20120510','20120603','A'). テーブルデータ(613,'20120510','20120615','A'). テーブルデータ(614,'20120510','20120513','A'). テーブルデータ(615,'20120510','20120626','A'). テーブルデータ(616,'20120510','20120529','A'). テーブルデータ(617,'20120510','20120706','A'). テーブルデータ(618,'20120510','20120514','A'). テーブルデータ(619,'20120510','20120618','A'). テーブルデータ(620,'20120511','20120627','A'). テーブルデータ(621,'20120511','20120521','A'). テーブルデータ(622,'20120511','20120706','A'). テーブルデータ(623,'20120511','20120620','A'). テーブルデータ(624,'20120511','20120529','A'). テーブルデータ(625,'20120511','20120516','A'). テーブルデータ(626,'20120511','20120514','A'). テーブルデータ(627,'20120511','20120520','A'). テーブルデータ(628,'20120511','20120624','A'). テーブルデータ(629,'20120511','20120701','A'). テーブルデータ(630,'20120511','20120516','A'). テーブルデータ(631,'20120511','20120525','A'). テーブルデータ(632,'20120511','20120611','A'). テーブルデータ(633,'20120511','20120526','A'). テーブルデータ(634,'20120511','20120615','A'). テーブルデータ(635,'20120511','20120704','A'). テーブルデータ(636,'20120511','20120629','A'). テーブルデータ(637,'20120511','20120608','A'). テーブルデータ(638,'20120511','20120613','A'). テーブルデータ(639,'20120511','20120618','A'). テーブルデータ(640,'20120511','20120625','A'). テーブルデータ(641,'20120511','20120602','A'). テーブルデータ(642,'20120512','20120603','A'). テーブルデータ(643,'20120512','20120529','A'). テーブルデータ(644,'20120512','20120701','A'). テーブルデータ(645,'20120513','20120527','A'). テーブルデータ(646,'20120513','20120628','A'). テーブルデータ(647,'20120513','20120526','A'). テーブルデータ(648,'20120513','20120519','A'). テーブルデータ(649,'20120514','20120606','A'). テーブルデータ(650,'20120514','20120707','A'). テーブルデータ(651,'20120514','20120528','A'). テーブルデータ(652,'20120514','20120616','A'). テーブルデータ(653,'20120515','20120601','A'). テーブルデータ(654,'20120515','20120626','A'). テーブルデータ(655,'20120515','20120619','A'). テーブルデータ(656,'20120515','20120523','A'). テーブルデータ(657,'20120515','20120623','A'). テーブルデータ(658,'20120515','20120704','A'). テーブルデータ(659,'20120515','20120616','A'). テーブルデータ(660,'20120515','20120708','A'). テーブルデータ(661,'20120515','20120601','A'). テーブルデータ(662,'20120515','20120610','A'). テーブルデータ(663,'20120515','20120619','A'). テーブルデータ(664,'20120515','20120621','A'). テーブルデータ(665,'20120515','20120705','A'). テーブルデータ(666,'20120515','20120528','A'). テーブルデータ(667,'20120515','20120607','A'). テーブルデータ(668,'20120515','20120528','A'). テーブルデータ(669,'20120515','20120523','A'). テーブルデータ(670,'20120515','20120629','A'). テーブルデータ(671,'20120515','20120615','A'). テーブルデータ(672,'20120515','20120704','A'). テーブルデータ(673,'20120515','20120602','A'). テーブルデータ(674,'20120515','20120621','A'). テーブルデータ(675,'20120515','20120620','A'). テーブルデータ(676,'20120515','20120607','A'). テーブルデータ(677,'20120515','20120619','A'). テーブルデータ(678,'20120515','20120525','A'). テーブルデータ(679,'20120515','20120622','A'). テーブルデータ(680,'20120515','20120614','A'). テーブルデータ(681,'20120515','20120608','A'). テーブルデータ(682,'20120515','20120526','A'). テーブルデータ(683,'20120516','20120618','A'). テーブルデータ(684,'20120516','20120630','A'). テーブルデータ(685,'20120516','20120704','A'). テーブルデータ(686,'20120516','20120618','A'). テーブルデータ(687,'20120516','20120609','A'). テーブルデータ(688,'20120516','20120616','A'). テーブルデータ(689,'20120516','20120521','A'). テーブルデータ(690,'20120516','20120526','A'). テーブルデータ(691,'20120516','20120703','A'). テーブルデータ(692,'20120516','20120608','A'). テーブルデータ(693,'20120516','20120630','A'). テーブルデータ(694,'20120516','20120611','A'). テーブルデータ(695,'20120516','20120531','A'). テーブルデータ(696,'20120516','20120714','A'). テーブルデータ(697,'20120516','20120704','A'). テーブルデータ(698,'20120516','20120605','A'). テーブルデータ(699,'20120516','20120523','A'). テーブルデータ(700,'20120516','20120611','A'). テーブルデータ(701,'20120516','20120628','A'). テーブルデータ(702,'20120516','20120712','A'). テーブルデータ(703,'20120516','20120621','A'). テーブルデータ(704,'20120516','20120606','A'). テーブルデータ(705,'20120517','20120517','A'). テーブルデータ(706,'20120517','20120712','A'). テーブルデータ(707,'20120517','20120621','A'). テーブルデータ(708,'20120517','20120616','A'). テーブルデータ(709,'20120517','20120604','A'). テーブルデータ(710,'20120517','20120707','A'). テーブルデータ(711,'20120517','20120628','A'). テーブルデータ(712,'20120517','20120618','A'). テーブルデータ(713,'20120517','20120602','A'). テーブルデータ(714,'20120517','20120605','A'). テーブルデータ(715,'20120517','20120607','A'). テーブルデータ(716,'20120517','20120706','A'). テーブルデータ(717,'20120517','20120630','A'). テーブルデータ(718,'20120517','20120708','A'). テーブルデータ(719,'20120517','20120703','A'). テーブルデータ(720,'20120517','20120710','A'). テーブルデータ(721,'20120517','20120626','A'). テーブルデータ(722,'20120517','20120520','A'). テーブルデータ(723,'20120517','20120618','A'). テーブルデータ(724,'20120517','20120714','A'). テーブルデータ(725,'20120517','20120527','A'). テーブルデータ(726,'20120517','20120609','A'). テーブルデータ(727,'20120517','20120703','A'). テーブルデータ(728,'20120517','20120616','A'). テーブルデータ(729,'20120517','20120616','A'). テーブルデータ(730,'20120517','20120530','A'). テーブルデータ(731,'20120518','20120606','A'). テーブルデータ(732,'20120518','20120629','A'). テーブルデータ(733,'20120518','20120614','A'). テーブルデータ(734,'20120518','20120701','A'). テーブルデータ(735,'20120518','20120629','A'). テーブルデータ(736,'20120518','20120602','A'). テーブルデータ(737,'20120518','20120530','A'). テーブルデータ(738,'20120518','20120522','A'). テーブルデータ(739,'20120518','20120621','A'). テーブルデータ(740,'20120518','20120521','A'). テーブルデータ(741,'20120518','20120625','A'). テーブルデータ(742,'20120518','20120524','A'). テーブルデータ(743,'20120518','20120607','A'). テーブルデータ(744,'20120518','20120715','A'). テーブルデータ(745,'20120518','20120606','A'). テーブルデータ(746,'20120519','20120630','A'). テーブルデータ(747,'20120519','20120522','A'). テーブルデータ(748,'20120519','20120629','A'). テーブルデータ(749,'20120520','20120702','A'). テーブルデータ(750,'20120520','20120703','A'). テーブルデータ(751,'20120520','20120711','A'). テーブルデータ(752,'20120520','20120701','A'). テーブルデータ(753,'20120520','20120713','A'). テーブルデータ(754,'20120520','20120604','A'). テーブルデータ(755,'20120520','20120610','A'). テーブルデータ(756,'20120520','20120606','A'). テーブルデータ(757,'20120520','20120704','A'). テーブルデータ(758,'20120520','20120616','A'). テーブルデータ(759,'20120520','20120620','A'). テーブルデータ(760,'20120520','20120715','A'). テーブルデータ(761,'20120520','20120529','A'). テーブルデータ(762,'20120520','20120717','A'). テーブルデータ(763,'20120520','20120630','A'). テーブルデータ(764,'20120520','20120702','A'). テーブルデータ(765,'20120520','20120602','A'). テーブルデータ(766,'20120520','20120712','A'). テーブルデータ(767,'20120520','20120706','A'). テーブルデータ(768,'20120520','20120628','A'). テーブルデータ(769,'20120520','20120707','A'). テーブルデータ(770,'20120520','20120615','A'). テーブルデータ(771,'20120520','20120626','A'). テーブルデータ(772,'20120520','20120520','A'). テーブルデータ(773,'20120520','20120613','A'). テーブルデータ(774,'20120520','20120707','A'). テーブルデータ(775,'20120520','20120713','A'). テーブルデータ(776,'20120520','20120717','A'). テーブルデータ(777,'20120520','20120710','A'). テーブルデータ(778,'20120521','20120608','A'). テーブルデータ(779,'20120521','20120625','A'). テーブルデータ(780,'20120521','20120602','A'). テーブルデータ(781,'20120521','20120601','A'). テーブルデータ(782,'20120521','20120530','A'). テーブルデータ(783,'20120521','20120719','A'). テーブルデータ(784,'20120521','20120616','A'). テーブルデータ(785,'20120522','20120607','A'). テーブルデータ(786,'20120523','20120711','A'). テーブルデータ(787,'20120523','20120701','A'). テーブルデータ(788,'20120523','20120523','A'). テーブルデータ(789,'20120523','20120720','A'). テーブルデータ(790,'20120523','20120621','A'). テーブルデータ(791,'20120524','20120704','A'). テーブルデータ(792,'20120524','20120627','A'). テーブルデータ(793,'20120524','20120611','A'). テーブルデータ(794,'20120524','20120622','A'). テーブルデータ(795,'20120525','20120601','A'). テーブルデータ(796,'20120525','20120711','A'). テーブルデータ(797,'20120525','20120707','A'). テーブルデータ(798,'20120525','20120601','A'). テーブルデータ(799,'20120525','20120605','A'). テーブルデータ(800,'20120525','20120626','A'). テーブルデータ(801,'20120525','20120527','A'). テーブルデータ(802,'20120526','20120610','A'). テーブルデータ(803,'20120526','20120625','A'). テーブルデータ(804,'20120527','20120716','A'). テーブルデータ(805,'20120527','20120630','A'). テーブルデータ(806,'20120527','20120626','A'). テーブルデータ(807,'20120527','20120717','A'). テーブルデータ(808,'20120527','20120629','A'). テーブルデータ(809,'20120527','20120723','A'). テーブルデータ(810,'20120527','20120610','A'). テーブルデータ(811,'20120527','20120707','A'). テーブルデータ(812,'20120527','20120528','A'). テーブルデータ(813,'20120527','20120530','A'). テーブルデータ(814,'20120527','20120616','A'). テーブルデータ(815,'20120527','20120719','A'). テーブルデータ(816,'20120527','20120529','A'). テーブルデータ(817,'20120527','20120707','A'). テーブルデータ(818,'20120527','20120623','A'). テーブルデータ(819,'20120527','20120701','A'). テーブルデータ(820,'20120527','20120612','A'). テーブルデータ(821,'20120527','20120711','A'). テーブルデータ(822,'20120527','20120531','A'). テーブルデータ(823,'20120527','20120618','A'). テーブルデータ(824,'20120528','20120718','A'). テーブルデータ(825,'20120528','20120724','A'). テーブルデータ(826,'20120528','20120719','A'). テーブルデータ(827,'20120528','20120721','A'). テーブルデータ(828,'20120528','20120618','A'). テーブルデータ(829,'20120528','20120713','A'). テーブルデータ(830,'20120528','20120722','A'). テーブルデータ(831,'20120528','20120704','A'). テーブルデータ(832,'20120528','20120605','A'). テーブルデータ(833,'20120528','20120612','A'). テーブルデータ(834,'20120528','20120616','A'). テーブルデータ(835,'20120528','20120709','A'). テーブルデータ(836,'20120528','20120704','A'). テーブルデータ(837,'20120528','20120531','A'). テーブルデータ(838,'20120528','20120613','A'). テーブルデータ(839,'20120528','20120701','A'). テーブルデータ(840,'20120528','20120614','A'). テーブルデータ(841,'20120528','20120716','A'). テーブルデータ(842,'20120528','20120624','A'). テーブルデータ(843,'20120528','20120609','A'). テーブルデータ(844,'20120528','20120530','A'). テーブルデータ(845,'20120528','20120618','A'). テーブルデータ(846,'20120528','20120603','A'). テーブルデータ(847,'20120529','20120708','A'). テーブルデータ(848,'20120529','20120710','A'). テーブルデータ(849,'20120529','20120719','A'). テーブルデータ(850,'20120529','20120623','A'). テーブルデータ(851,'20120529','20120714','A'). テーブルデータ(852,'20120529','20120603','A'). テーブルデータ(853,'20120529','20120608','A'). テーブルデータ(854,'20120529','20120628','A'). テーブルデータ(855,'20120529','20120601','A'). テーブルデータ(856,'20120529','20120722','A'). テーブルデータ(857,'20120529','20120614','A'). テーブルデータ(858,'20120529','20120614','A'). テーブルデータ(859,'20120529','20120708','A'). テーブルデータ(860,'20120529','20120610','A'). テーブルデータ(861,'20120530','20120717','A'). テーブルデータ(862,'20120530','20120618','A'). テーブルデータ(863,'20120530','20120604','A'). テーブルデータ(864,'20120530','20120629','A'). テーブルデータ(865,'20120530','20120725','A'). テーブルデータ(866,'20120530','20120530','A'). テーブルデータ(867,'20120530','20120707','A'). テーブルデータ(868,'20120530','20120622','A'). テーブルデータ(869,'20120530','20120616','A'). テーブルデータ(870,'20120530','20120627','A'). テーブルデータ(871,'20120530','20120711','A'). テーブルデータ(872,'20120530','20120620','A'). テーブルデータ(873,'20120530','20120629','A'). テーブルデータ(874,'20120530','20120724','A'). テーブルデータ(875,'20120530','20120627','A'). テーブルデータ(876,'20120530','20120604','A'). テーブルデータ(877,'20120531','20120610','A'). テーブルデータ(878,'20120531','20120727','A'). テーブルデータ(879,'20120531','20120723','A'). テーブルデータ(880,'20120531','20120718','A'). テーブルデータ(881,'20120531','20120602','A'). テーブルデータ(882,'20120531','20120603','A'). テーブルデータ(883,'20120601','20120728','A'). テーブルデータ(884,'20120601','20120728','A'). テーブルデータ(885,'20120601','20120628','A'). テーブルデータ(886,'20120601','20120607','A'). テーブルデータ(887,'20120601','20120630','A'). テーブルデータ(888,'20120601','20120702','A'). テーブルデータ(889,'20120601','20120722','A'). テーブルデータ(890,'20120601','20120610','A'). テーブルデータ(891,'20120601','20120721','A'). テーブルデータ(892,'20120601','20120719','A'). テーブルデータ(893,'20120601','20120710','A'). テーブルデータ(894,'20120602','20120720','A'). テーブルデータ(895,'20120602','20120612','A'). テーブルデータ(896,'20120602','20120725','A'). テーブルデータ(897,'20120602','20120729','A'). テーブルデータ(898,'20120602','20120702','A'). テーブルデータ(899,'20120602','20120708','A'). テーブルデータ(900,'20120602','20120621','A'). テーブルデータ(901,'20120602','20120724','A'). テーブルデータ(902,'20120602','20120703','A'). テーブルデータ(903,'20120603','20120730','A'). テーブルデータ(904,'20120603','20120801','A'). テーブルデータ(905,'20120603','20120730','A'). テーブルデータ(906,'20120603','20120719','A'). テーブルデータ(907,'20120603','20120725','A'). テーブルデータ(908,'20120603','20120710','A'). テーブルデータ(909,'20120603','20120714','A'). テーブルデータ(910,'20120603','20120728','A'). テーブルデータ(911,'20120603','20120721','A'). テーブルデータ(912,'20120603','20120711','A'). テーブルデータ(913,'20120603','20120717','A'). テーブルデータ(914,'20120603','20120618','A'). テーブルデータ(915,'20120603','20120709','A'). テーブルデータ(916,'20120603','20120608','A'). テーブルデータ(917,'20120603','20120719','A'). テーブルデータ(918,'20120603','20120701','A'). テーブルデータ(919,'20120603','20120617','A'). テーブルデータ(920,'20120603','20120701','A'). テーブルデータ(921,'20120604','20120727','A'). テーブルデータ(922,'20120604','20120801','A'). テーブルデータ(923,'20120604','20120731','A'). テーブルデータ(924,'20120604','20120729','A'). テーブルデータ(925,'20120604','20120726','A'). テーブルデータ(926,'20120604','20120728','A'). テーブルデータ(927,'20120604','20120629','A'). テーブルデータ(928,'20120604','20120624','A'). テーブルデータ(929,'20120604','20120609','A'). テーブルデータ(930,'20120605','20120718','A'). テーブルデータ(931,'20120605','20120727','A'). テーブルデータ(932,'20120605','20120612','A'). テーブルデータ(933,'20120605','20120717','A'). テーブルデータ(934,'20120605','20120716','A'). テーブルデータ(935,'20120605','20120728','A'). テーブルデータ(936,'20120605','20120709','A'). テーブルデータ(937,'20120605','20120624','A'). テーブルデータ(938,'20120605','20120709','A'). テーブルデータ(939,'20120605','20120626','A'). テーブルデータ(940,'20120605','20120803','A'). テーブルデータ(941,'20120605','20120610','A'). テーブルデータ(942,'20120605','20120801','A'). テーブルデータ(943,'20120605','20120619','A'). テーブルデータ(944,'20120605','20120716','A'). テーブルデータ(945,'20120605','20120607','A'). テーブルデータ(946,'20120605','20120727','A'). テーブルデータ(947,'20120605','20120606','A'). テーブルデータ(948,'20120606','20120618','A'). テーブルデータ(949,'20120606','20120616','A'). テーブルデータ(950,'20120606','20120608','A'). テーブルデータ(951,'20120606','20120608','A'). テーブルデータ(952,'20120606','20120804','A'). テーブルデータ(953,'20120606','20120802','A'). テーブルデータ(954,'20120606','20120730','A'). テーブルデータ(955,'20120606','20120729','A'). テーブルデータ(956,'20120606','20120621','A'). テーブルデータ(957,'20120606','20120612','A'). テーブルデータ(958,'20120606','20120727','A'). テーブルデータ(959,'20120606','20120630','A'). テーブルデータ(960,'20120606','20120726','A'). テーブルデータ(961,'20120606','20120719','A'). テーブルデータ(962,'20120606','20120707','A'). テーブルデータ(963,'20120606','20120708','A'). テーブルデータ(964,'20120606','20120623','A'). テーブルデータ(965,'20120607','20120805','A'). テーブルデータ(966,'20120607','20120705','A'). テーブルデータ(967,'20120607','20120728','A'). テーブルデータ(968,'20120607','20120627','A'). テーブルデータ(969,'20120607','20120704','A'). テーブルデータ(970,'20120607','20120802','A'). テーブルデータ(971,'20120607','20120617','A'). テーブルデータ(972,'20120607','20120718','A'). テーブルデータ(973,'20120607','20120707','A'). テーブルデータ(974,'20120607','20120619','A'). テーブルデータ(975,'20120607','20120702','A'). テーブルデータ(976,'20120607','20120708','A'). テーブルデータ(977,'20120607','20120706','A'). テーブルデータ(978,'20120607','20120714','A'). テーブルデータ(979,'20120607','20120718','A'). テーブルデータ(980,'20120607','20120630','A'). テーブルデータ(981,'20120607','20120708','A'). テーブルデータ(982,'20120607','20120709','A'). テーブルデータ(983,'20120608','20120704','A'). テーブルデータ(984,'20120608','20120626','A'). テーブルデータ(985,'20120608','20120705','A'). テーブルデータ(986,'20120608','20120702','A'). テーブルデータ(987,'20120608','20120617','A'). テーブルデータ(988,'20120608','20120730','A'). テーブルデータ(989,'20120608','20120622','A'). テーブルデータ(990,'20120608','20120722','A'). テーブルデータ(991,'20120608','20120623','A'). テーブルデータ(992,'20120608','20120717','A'). テーブルデータ(993,'20120608','20120609','A'). テーブルデータ(994,'20120608','20120710','A'). テーブルデータ(995,'20120608','20120716','A'). テーブルデータ(996,'20120608','20120707','A'). テーブルデータ(997,'20120608','20120624','A'). テーブルデータ(998,'20120608','20120728','A'). テーブルデータ(999,'20120608','20120803','A'). テーブルデータ(1000,'20120608','20120612','A'). テーブルデータ(1001,'20120608','20120608','A'). テーブルデータ(1002,'20120608','20120707','A'). テーブルデータ(1003,'20120608','20120712','A'). テーブルデータ(1004,'20120609','20120802','A'). テーブルデータ(1005,'20120609','20120615','A'). テーブルデータ(1006,'20120609','20120705','A'). テーブルデータ(1007,'20120609','20120702','A'). テーブルデータ(1008,'20120609','20120718','A'). テーブルデータ(1009,'20120609','20120728','A'). テーブルデータ(1010,'20120610','20120622','A'). テーブルデータ(1011,'20120610','20120611','A'). テーブルデータ(1012,'20120610','20120623','A'). テーブルデータ(1013,'20120610','20120710','A'). テーブルデータ(1014,'20120610','20120709','A'). テーブルデータ(1015,'20120610','20120709','A'). テーブルデータ(1016,'20120610','20120711','A'). テーブルデータ(1017,'20120610','20120623','A'). テーブルデータ(1018,'20120610','20120724','A'). テーブルデータ(1019,'20120610','20120625','A'). テーブルデータ(1020,'20120610','20120708','A'). テーブルデータ(1021,'20120610','20120625','A'). テーブルデータ(1022,'20120610','20120627','A'). テーブルデータ(1023,'20120610','20120802','A'). テーブルデータ(1024,'20120610','20120802','A'). テーブルデータ(1025,'20120610','20120718','A'). テーブルデータ(1026,'20120610','20120619','A'). テーブルデータ(1027,'20120610','20120715','A'). テーブルデータ(1028,'20120610','20120715','A'). テーブルデータ(1029,'20120610','20120623','A'). テーブルデータ(1030,'20120610','20120708','A'). テーブルデータ(1031,'20120610','20120805','A'). テーブルデータ(1032,'20120610','20120720','A'). テーブルデータ(1033,'20120610','20120713','A'). テーブルデータ(1034,'20120610','20120723','A'). テーブルデータ(1035,'20120610','20120726','A'). テーブルデータ(1036,'20120611','20120808','A'). テーブルデータ(1037,'20120611','20120628','A'). テーブルデータ(1038,'20120611','20120721','A'). テーブルデータ(1039,'20120611','20120726','A'). テーブルデータ(1040,'20120611','20120702','A'). テーブルデータ(1041,'20120611','20120722','A'). テーブルデータ(1042,'20120611','20120731','A'). テーブルデータ(1043,'20120611','20120724','A'). テーブルデータ(1044,'20120611','20120621','A'). テーブルデータ(1045,'20120611','20120701','A'). テーブルデータ(1046,'20120611','20120625','A'). テーブルデータ(1047,'20120611','20120626','A'). テーブルデータ(1048,'20120611','20120615','A'). テーブルデータ(1049,'20120611','20120703','A'). テーブルデータ(1050,'20120611','20120725','A'). テーブルデータ(1051,'20120611','20120630','A'). テーブルデータ(1052,'20120611','20120720','A'). テーブルデータ(1053,'20120611','20120710','A'). テーブルデータ(1054,'20120611','20120615','A'). テーブルデータ(1055,'20120611','20120620','A'). テーブルデータ(1056,'20120611','20120719','A'). テーブルデータ(1057,'20120611','20120712','A'). テーブルデータ(1058,'20120612','20120725','A'). テーブルデータ(1059,'20120612','20120810','A'). テーブルデータ(1060,'20120612','20120715','A'). テーブルデータ(1061,'20120612','20120705','A'). テーブルデータ(1062,'20120612','20120706','A'). テーブルデータ(1063,'20120612','20120628','A'). テーブルデータ(1064,'20120612','20120613','A'). テーブルデータ(1065,'20120613','20120619','A'). テーブルデータ(1066,'20120613','20120624','A'). テーブルデータ(1067,'20120613','20120730','A'). テーブルデータ(1068,'20120613','20120804','A'). テーブルデータ(1069,'20120613','20120715','A'). テーブルデータ(1070,'20120613','20120712','A'). テーブルデータ(1071,'20120613','20120725','A'). テーブルデータ(1072,'20120613','20120621','A'). テーブルデータ(1073,'20120613','20120714','A'). テーブルデータ(1074,'20120613','20120615','A'). テーブルデータ(1075,'20120613','20120627','A'). テーブルデータ(1076,'20120613','20120730','A'). テーブルデータ(1077,'20120613','20120810','A'). テーブルデータ(1078,'20120613','20120719','A'). テーブルデータ(1079,'20120613','20120706','A'). テーブルデータ(1080,'20120613','20120630','A'). テーブルデータ(1081,'20120614','20120805','A'). テーブルデータ(1082,'20120614','20120627','A'). テーブルデータ(1083,'20120614','20120701','A'). テーブルデータ(1084,'20120614','20120706','A'). テーブルデータ(1085,'20120614','20120729','A'). テーブルデータ(1086,'20120614','20120806','A'). テーブルデータ(1087,'20120614','20120810','A'). テーブルデータ(1088,'20120614','20120720','A'). テーブルデータ(1089,'20120615','20120706','A'). テーブルデータ(1090,'20120615','20120807','A'). テーブルデータ(1091,'20120615','20120711','A'). テーブルデータ(1092,'20120615','20120629','A'). テーブルデータ(1093,'20120615','20120615','A'). テーブルデータ(1094,'20120615','20120718','A'). テーブルデータ(1095,'20120615','20120710','A'). テーブルデータ(1096,'20120615','20120802','A'). テーブルデータ(1097,'20120615','20120710','A'). テーブルデータ(1098,'20120615','20120804','A'). テーブルデータ(1099,'20120615','20120624','A'). テーブルデータ(1100,'20120615','20120813','A'). テーブルデータ(1101,'20120615','20120812','A'). テーブルデータ(1102,'20120615','20120725','A'). テーブルデータ(1103,'20120615','20120617','A'). テーブルデータ(1104,'20120615','20120619','A'). テーブルデータ(1105,'20120615','20120704','A'). テーブルデータ(1106,'20120615','20120615','A'). テーブルデータ(1107,'20120615','20120726','A'). テーブルデータ(1108,'20120616','20120626','A'). テーブルデータ(1109,'20120616','20120726','A'). テーブルデータ(1110,'20120616','20120712','A'). テーブルデータ(1111,'20120616','20120709','A'). テーブルデータ(1112,'20120616','20120804','A'). テーブルデータ(1113,'20120616','20120726','A'). テーブルデータ(1114,'20120616','20120624','A'). テーブルデータ(1115,'20120616','20120729','A'). テーブルデータ(1116,'20120616','20120724','A'). テーブルデータ(1117,'20120616','20120723','A'). テーブルデータ(1118,'20120616','20120808','A'). テーブルデータ(1119,'20120616','20120806','A'). テーブルデータ(1120,'20120616','20120716','A'). テーブルデータ(1121,'20120617','20120622','A'). テーブルデータ(1122,'20120617','20120717','A'). テーブルデータ(1123,'20120617','20120809','A'). テーブルデータ(1124,'20120617','20120718','A'). テーブルデータ(1125,'20120617','20120705','A'). テーブルデータ(1126,'20120617','20120627','A'). テーブルデータ(1127,'20120617','20120708','A'). テーブルデータ(1128,'20120617','20120714','A'). テーブルデータ(1129,'20120617','20120626','A'). テーブルデータ(1130,'20120617','20120628','A'). テーブルデータ(1131,'20120617','20120617','A'). テーブルデータ(1132,'20120617','20120620','A'). テーブルデータ(1133,'20120617','20120702','A'). テーブルデータ(1134,'20120617','20120706','A'). テーブルデータ(1135,'20120617','20120621','A'). テーブルデータ(1136,'20120617','20120804','A'). テーブルデータ(1137,'20120617','20120810','A'). テーブルデータ(1138,'20120617','20120623','A'). テーブルデータ(1139,'20120617','20120716','A'). テーブルデータ(1140,'20120617','20120629','A'). テーブルデータ(1141,'20120617','20120716','A'). テーブルデータ(1142,'20120618','20120810','A'). テーブルデータ(1143,'20120618','20120718','A'). テーブルデータ(1144,'20120618','20120810','A'). テーブルデータ(1145,'20120618','20120711','A'). テーブルデータ(1146,'20120618','20120625','A'). テーブルデータ(1147,'20120618','20120727','A'). テーブルデータ(1148,'20120618','20120702','A'). テーブルデータ(1149,'20120618','20120717','A'). テーブルデータ(1150,'20120618','20120816','A'). テーブルデータ(1151,'20120618','20120629','A'). テーブルデータ(1152,'20120618','20120816','A'). テーブルデータ(1153,'20120619','20120731','A'). テーブルデータ(1154,'20120619','20120629','A'). テーブルデータ(1155,'20120619','20120804','A'). テーブルデータ(1156,'20120619','20120813','A'). テーブルデータ(1157,'20120619','20120718','A'). テーブルデータ(1158,'20120619','20120813','A'). テーブルデータ(1159,'20120619','20120625','A'). テーブルデータ(1160,'20120619','20120710','A'). テーブルデータ(1161,'20120619','20120809','A'). テーブルデータ(1162,'20120619','20120703','A'). テーブルデータ(1163,'20120619','20120722','A'). テーブルデータ(1164,'20120619','20120805','A'). テーブルデータ(1165,'20120619','20120621','A'). テーブルデータ(1166,'20120619','20120716','A'). テーブルデータ(1167,'20120619','20120811','A'). テーブルデータ(1168,'20120620','20120729','A'). テーブルデータ(1169,'20120620','20120712','A'). テーブルデータ(1170,'20120620','20120724','A'). テーブルデータ(1171,'20120620','20120714','A'). テーブルデータ(1172,'20120620','20120803','A'). テーブルデータ(1173,'20120620','20120709','A'). テーブルデータ(1174,'20120620','20120729','A'). テーブルデータ(1175,'20120620','20120802','A'). テーブルデータ(1176,'20120620','20120817','A'). テーブルデータ(1177,'20120620','20120812','A'). テーブルデータ(1178,'20120620','20120702','A'). テーブルデータ(1179,'20120620','20120808','A'). テーブルデータ(1180,'20120620','20120625','A'). テーブルデータ(1181,'20120620','20120624','A'). テーブルデータ(1182,'20120620','20120723','A'). テーブルデータ(1183,'20120620','20120729','A'). テーブルデータ(1184,'20120620','20120704','A'). テーブルデータ(1185,'20120620','20120709','A'). テーブルデータ(1186,'20120620','20120725','A'). テーブルデータ(1187,'20120620','20120725','A'). テーブルデータ(1188,'20120620','20120627','A'). テーブルデータ(1189,'20120620','20120723','A'). テーブルデータ(1190,'20120620','20120808','A'). テーブルデータ(1191,'20120620','20120809','A'). テーブルデータ(1192,'20120621','20120713','A'). テーブルデータ(1193,'20120621','20120728','A'). テーブルデータ(1194,'20120621','20120802','A'). テーブルデータ(1195,'20120621','20120809','A'). テーブルデータ(1196,'20120621','20120721','A'). テーブルデータ(1197,'20120621','20120626','A'). テーブルデータ(1198,'20120621','20120711','A'). テーブルデータ(1199,'20120621','20120804','A'). テーブルデータ(1200,'20120621','20120722','A'). テーブルデータ(1201,'20120621','20120728','A'). テーブルデータ(1202,'20120621','20120720','A'). テーブルデータ(1203,'20120621','20120803','A'). テーブルデータ(1204,'20120621','20120707','A'). テーブルデータ(1205,'20120621','20120703','A'). テーブルデータ(1206,'20120621','20120801','A'). テーブルデータ(1207,'20120621','20120623','A'). テーブルデータ(1208,'20120621','20120716','A'). テーブルデータ(1209,'20120621','20120714','A'). テーブルデータ(1210,'20120622','20120713','A'). テーブルデータ(1211,'20120622','20120809','A'). テーブルデータ(1212,'20120622','20120730','A'). テーブルデータ(1213,'20120622','20120719','A'). テーブルデータ(1214,'20120622','20120622','A'). テーブルデータ(1215,'20120622','20120627','A'). テーブルデータ(1216,'20120622','20120624','A'). テーブルデータ(1217,'20120622','20120629','A'). テーブルデータ(1218,'20120622','20120731','A'). テーブルデータ(1219,'20120622','20120812','A'). テーブルデータ(1220,'20120622','20120810','A'). テーブルデータ(1221,'20120622','20120718','A'). テーブルデータ(1222,'20120622','20120705','A'). テーブルデータ(1223,'20120622','20120718','A'). テーブルデータ(1224,'20120622','20120630','A'). テーブルデータ(1225,'20120622','20120815','A'). テーブルデータ(1226,'20120622','20120817','A'). テーブルデータ(1227,'20120622','20120628','A'). テーブルデータ(1228,'20120622','20120629','A'). テーブルデータ(1229,'20120622','20120724','A'). テーブルデータ(1230,'20120622','20120729','A'). テーブルデータ(1231,'20120622','20120805','A'). テーブルデータ(1232,'20120622','20120623','A'). テーブルデータ(1233,'20120622','20120712','A'). テーブルデータ(1234,'20120622','20120622','A'). テーブルデータ(1235,'20120622','20120628','A'). テーブルデータ(1236,'20120622','20120815','A'). テーブルデータ(1237,'20120622','20120815','A'). テーブルデータ(1238,'20120622','20120715','A'). テーブルデータ(1239,'20120622','20120709','A'). テーブルデータ(1240,'20120623','20120806','A'). テーブルデータ(1241,'20120623','20120819','A'). テーブルデータ(1242,'20120623','20120725','A'). テーブルデータ(1243,'20120623','20120704','A'). テーブルデータ(1244,'20120623','20120819','A'). テーブルデータ(1245,'20120623','20120722','A'). テーブルデータ(1246,'20120623','20120628','A'). テーブルデータ(1247,'20120623','20120818','A'). テーブルデータ(1248,'20120623','20120701','A'). テーブルデータ(1249,'20120623','20120811','A'). テーブルデータ(1250,'20120623','20120807','A'). テーブルデータ(1251,'20120623','20120728','A'). テーブルデータ(1252,'20120623','20120625','A'). テーブルデータ(1253,'20120623','20120704','A'). テーブルデータ(1254,'20120623','20120728','A'). テーブルデータ(1255,'20120623','20120811','A'). テーブルデータ(1256,'20120623','20120821','A'). テーブルデータ(1257,'20120623','20120803','A'). テーブルデータ(1258,'20120623','20120818','A'). テーブルデータ(1259,'20120623','20120725','A'). テーブルデータ(1260,'20120623','20120704','A'). テーブルデータ(1261,'20120623','20120802','A'). テーブルデータ(1262,'20120623','20120718','A'). テーブルデータ(1263,'20120623','20120716','A'). テーブルデータ(1264,'20120624','20120725','A'). テーブルデータ(1265,'20120624','20120703','A'). テーブルデータ(1266,'20120624','20120721','A'). テーブルデータ(1267,'20120625','20120713','A'). テーブルデータ(1268,'20120625','20120707','A'). テーブルデータ(1269,'20120625','20120725','A'). テーブルデータ(1270,'20120625','20120711','A'). テーブルデータ(1271,'20120625','20120808','A'). テーブルデータ(1272,'20120625','20120728','A'). テーブルデータ(1273,'20120625','20120708','A'). テーブルデータ(1274,'20120625','20120701','A'). テーブルデータ(1275,'20120625','20120803','A'). テーブルデータ(1276,'20120625','20120705','A'). テーブルデータ(1277,'20120625','20120709','A'). テーブルデータ(1278,'20120625','20120723','A'). テーブルデータ(1279,'20120625','20120819','A'). テーブルデータ(1280,'20120625','20120805','A'). テーブルデータ(1281,'20120625','20120717','A'). テーブルデータ(1282,'20120625','20120823','A'). テーブルデータ(1283,'20120625','20120712','A'). テーブルデータ(1284,'20120626','20120823','A'). テーブルデータ(1285,'20120626','20120815','A'). テーブルデータ(1286,'20120626','20120824','A'). テーブルデータ(1287,'20120626','20120718','A'). テーブルデータ(1288,'20120627','20120728','A'). テーブルデータ(1289,'20120627','20120814','A'). テーブルデータ(1290,'20120627','20120714','A'). テーブルデータ(1291,'20120627','20120701','A'). テーブルデータ(1292,'20120627','20120708','A'). テーブルデータ(1293,'20120627','20120723','A'). テーブルデータ(1294,'20120627','20120720','A'). テーブルデータ(1295,'20120627','20120824','A'). テーブルデータ(1296,'20120627','20120811','A'). テーブルデータ(1297,'20120627','20120801','A'). テーブルデータ(1298,'20120627','20120717','A'). テーブルデータ(1299,'20120627','20120628','A'). テーブルデータ(1300,'20120627','20120709','A'). テーブルデータ(1301,'20120627','20120812','A'). テーブルデータ(1302,'20120627','20120711','A'). テーブルデータ(1303,'20120627','20120715','A'). テーブルデータ(1304,'20120627','20120722','A'). テーブルデータ(1305,'20120627','20120713','A'). テーブルデータ(1306,'20120627','20120729','A'). テーブルデータ(1307,'20120627','20120811','A'). テーブルデータ(1308,'20120627','20120709','A'). テーブルデータ(1309,'20120627','20120703','A'). テーブルデータ(1310,'20120627','20120825','A'). テーブルデータ(1311,'20120627','20120708','A'). テーブルデータ(1312,'20120628','20120701','A'). テーブルデータ(1313,'20120628','20120629','A'). テーブルデータ(1314,'20120628','20120703','A'). テーブルデータ(1315,'20120628','20120630','A'). テーブルデータ(1316,'20120628','20120714','A'). テーブルデータ(1317,'20120628','20120826','A'). テーブルデータ(1318,'20120628','20120801','A'). テーブルデータ(1319,'20120628','20120702','A'). テーブルデータ(1320,'20120628','20120714','A'). テーブルデータ(1321,'20120628','20120728','A'). テーブルデータ(1322,'20120628','20120705','A'). テーブルデータ(1323,'20120628','20120801','A'). テーブルデータ(1324,'20120628','20120820','A'). テーブルデータ(1325,'20120628','20120824','A'). テーブルデータ(1326,'20120628','20120717','A'). テーブルデータ(1327,'20120628','20120718','A'). テーブルデータ(1328,'20120628','20120708','A'). テーブルデータ(1329,'20120628','20120710','A'). テーブルデータ(1330,'20120628','20120730','A'). テーブルデータ(1331,'20120628','20120823','A'). テーブルデータ(1332,'20120628','20120717','A'). テーブルデータ(1333,'20120628','20120817','A'). テーブルデータ(1334,'20120628','20120711','A'). テーブルデータ(1335,'20120628','20120802','A'). テーブルデータ(1336,'20120629','20120826','A'). テーブルデータ(1337,'20120629','20120815','A'). テーブルデータ(1338,'20120629','20120720','A'). テーブルデータ(1339,'20120629','20120825','A'). テーブルデータ(1340,'20120629','20120818','A'). テーブルデータ(1341,'20120629','20120804','A'). テーブルデータ(1342,'20120629','20120629','A'). テーブルデータ(1343,'20120629','20120812','A'). テーブルデータ(1344,'20120629','20120809','A'). テーブルデータ(1345,'20120629','20120702','A'). テーブルデータ(1346,'20120629','20120629','A'). テーブルデータ(1347,'20120629','20120731','A'). テーブルデータ(1348,'20120629','20120728','A'). テーブルデータ(1349,'20120629','20120824','A'). テーブルデータ(1350,'20120629','20120808','A'). テーブルデータ(1351,'20120629','20120827','A'). テーブルデータ(1352,'20120630','20120715','A'). テーブルデータ(1353,'20120630','20120813','A'). テーブルデータ(1354,'20120630','20120822','A'). テーブルデータ(1355,'20120630','20120726','A'). テーブルデータ(1356,'20120701','20120704','A'). テーブルデータ(1357,'20120701','20120801','A'). テーブルデータ(1358,'20120701','20120730','A'). テーブルデータ(1359,'20120701','20120821','A'). テーブルデータ(1360,'20120701','20120820','A'). テーブルデータ(1361,'20120702','20120706','A'). テーブルデータ(1362,'20120702','20120727','A'). テーブルデータ(1363,'20120702','20120728','A'). テーブルデータ(1364,'20120702','20120704','A'). テーブルデータ(1365,'20120702','20120707','A'). テーブルデータ(1366,'20120702','20120810','A'). テーブルデータ(1367,'20120702','20120822','A'). テーブルデータ(1368,'20120702','20120818','A'). テーブルデータ(1369,'20120702','20120709','A'). テーブルデータ(1370,'20120702','20120815','A'). テーブルデータ(1371,'20120702','20120802','A'). テーブルデータ(1372,'20120702','20120812','A'). テーブルデータ(1373,'20120702','20120810','A'). テーブルデータ(1374,'20120702','20120802','A'). テーブルデータ(1375,'20120702','20120715','A'). テーブルデータ(1376,'20120702','20120710','A'). テーブルデータ(1377,'20120702','20120729','A'). テーブルデータ(1378,'20120702','20120825','A'). テーブルデータ(1379,'20120702','20120830','A'). テーブルデータ(1380,'20120702','20120725','A'). テーブルデータ(1381,'20120703','20120815','A'). テーブルデータ(1382,'20120703','20120711','A'). テーブルデータ(1383,'20120704','20120812','A'). テーブルデータ(1384,'20120704','20120707','A'). テーブルデータ(1385,'20120704','20120831','A'). テーブルデータ(1386,'20120704','20120712','A'). テーブルデータ(1387,'20120704','20120827','A'). テーブルデータ(1388,'20120704','20120813','A'). テーブルデータ(1389,'20120704','20120724','A'). テーブルデータ(1390,'20120704','20120831','A'). テーブルデータ(1391,'20120704','20120710','A'). テーブルデータ(1392,'20120704','20120811','A'). テーブルデータ(1393,'20120704','20120825','A'). テーブルデータ(1394,'20120704','20120707','A'). テーブルデータ(1395,'20120704','20120722','A'). テーブルデータ(1396,'20120704','20120808','A'). テーブルデータ(1397,'20120704','20120823','A'). テーブルデータ(1398,'20120704','20120729','A'). テーブルデータ(1399,'20120704','20120723','A'). テーブルデータ(1400,'20120704','20120726','A'). テーブルデータ(1401,'20120704','20120710','A'). テーブルデータ(1402,'20120704','20120831','A'). テーブルデータ(1403,'20120704','20120818','A'). テーブルデータ(1404,'20120704','20120716','A'). テーブルデータ(1405,'20120704','20120831','A'). テーブルデータ(1406,'20120704','20120717','A'). テーブルデータ(1407,'20120704','20120710','A'). テーブルデータ(1408,'20120704','20120830','A'). テーブルデータ(1409,'20120704','20120801','A'). テーブルデータ(1410,'20120704','20120711','A'). テーブルデータ(1411,'20120705','20120810','A'). テーブルデータ(1412,'20120705','20120731','A'). テーブルデータ(1413,'20120705','20120717','A'). テーブルデータ(1414,'20120706','20120723','A'). テーブルデータ(1415,'20120706','20120726','A'). テーブルデータ(1416,'20120706','20120808','A'). テーブルデータ(1417,'20120706','20120901','A'). テーブルデータ(1418,'20120706','20120807','A'). テーブルデータ(1419,'20120706','20120729','A'). テーブルデータ(1420,'20120706','20120830','A'). テーブルデータ(1421,'20120706','20120717','A'). テーブルデータ(1422,'20120706','20120713','A'). テーブルデータ(1423,'20120706','20120902','A'). テーブルデータ(1424,'20120707','20120810','A'). テーブルデータ(1425,'20120707','20120817','A'). テーブルデータ(1426,'20120707','20120822','A'). テーブルデータ(1427,'20120707','20120830','A'). テーブルデータ(1428,'20120707','20120710','A'). テーブルデータ(1429,'20120707','20120821','A'). テーブルデータ(1430,'20120707','20120820','A'). テーブルデータ(1431,'20120707','20120824','A'). テーブルデータ(1432,'20120707','20120902','A'). テーブルデータ(1433,'20120707','20120819','A'). テーブルデータ(1434,'20120707','20120829','A'). テーブルデータ(1435,'20120707','20120831','A'). テーブルデータ(1436,'20120707','20120816','A'). テーブルデータ(1437,'20120707','20120728','A'). テーブルデータ(1438,'20120707','20120830','A'). テーブルデータ(1439,'20120707','20120712','A'). テーブルデータ(1440,'20120707','20120902','A'). テーブルデータ(1441,'20120707','20120727','A'). テーブルデータ(1442,'20120707','20120724','A'). テーブルデータ(1443,'20120707','20120804','A'). テーブルデータ(1444,'20120707','20120805','A'). テーブルデータ(1445,'20120707','20120805','A'). テーブルデータ(1446,'20120707','20120829','A'). テーブルデータ(1447,'20120707','20120726','A'). テーブルデータ(1448,'20120707','20120830','A'). テーブルデータ(1449,'20120707','20120723','A'). テーブルデータ(1450,'20120707','20120721','A'). テーブルデータ(1451,'20120707','20120712','A'). テーブルデータ(1452,'20120707','20120722','A'). テーブルデータ(1453,'20120707','20120712','A'). テーブルデータ(1454,'20120708','20120827','A'). テーブルデータ(1455,'20120708','20120823','A'). テーブルデータ(1456,'20120708','20120720','A'). テーブルデータ(1457,'20120708','20120813','A'). テーブルデータ(1458,'20120708','20120826','A'). テーブルデータ(1459,'20120708','20120826','A'). テーブルデータ(1460,'20120708','20120720','A'). テーブルデータ(1461,'20120708','20120806','A'). テーブルデータ(1462,'20120708','20120823','A'). テーブルデータ(1463,'20120708','20120901','A'). テーブルデータ(1464,'20120708','20120723','A'). テーブルデータ(1465,'20120708','20120810','A'). テーブルデータ(1466,'20120708','20120805','A'). テーブルデータ(1467,'20120708','20120813','A'). テーブルデータ(1468,'20120708','20120804','A'). テーブルデータ(1469,'20120708','20120810','A'). テーブルデータ(1470,'20120708','20120803','A'). テーブルデータ(1471,'20120708','20120817','A'). テーブルデータ(1472,'20120708','20120819','A'). テーブルデータ(1473,'20120708','20120823','A'). テーブルデータ(1474,'20120708','20120717','A'). テーブルデータ(1475,'20120708','20120711','A'). テーブルデータ(1476,'20120708','20120817','A'). テーブルデータ(1477,'20120708','20120805','A'). テーブルデータ(1478,'20120708','20120903','A'). テーブルデータ(1479,'20120708','20120902','A'). テーブルデータ(1480,'20120708','20120812','A'). テーブルデータ(1481,'20120709','20120713','A'). テーブルデータ(1482,'20120709','20120818','A'). テーブルデータ(1483,'20120709','20120729','A'). テーブルデータ(1484,'20120710','20120728','A'). テーブルデータ(1485,'20120710','20120804','A'). テーブルデータ(1486,'20120710','20120724','A'). テーブルデータ(1487,'20120710','20120907','A'). テーブルデータ(1488,'20120710','20120724','A'). テーブルデータ(1489,'20120710','20120805','A'). テーブルデータ(1490,'20120710','20120807','A'). テーブルデータ(1491,'20120710','20120901','A'). テーブルデータ(1492,'20120710','20120801','A'). テーブルデータ(1493,'20120710','20120822','A'). テーブルデータ(1494,'20120710','20120805','A'). テーブルデータ(1495,'20120710','20120821','A'). テーブルデータ(1496,'20120710','20120722','A'). テーブルデータ(1497,'20120710','20120902','A'). テーブルデータ(1498,'20120710','20120717','A'). テーブルデータ(1499,'20120710','20120809','A'). テーブルデータ(1500,'20120710','20120813','A'). テーブルデータ(1501,'20120711','20120727','A'). テーブルデータ(1502,'20120711','20120815','A'). テーブルデータ(1503,'20120711','20120824','A'). テーブルデータ(1504,'20120711','20120905','A'). テーブルデータ(1505,'20120711','20120715','A'). テーブルデータ(1506,'20120711','20120822','A'). テーブルデータ(1507,'20120711','20120825','A'). テーブルデータ(1508,'20120711','20120811','A'). テーブルデータ(1509,'20120711','20120816','A'). テーブルデータ(1510,'20120711','20120821','A'). テーブルデータ(1511,'20120711','20120714','A'). テーブルデータ(1512,'20120711','20120906','A'). テーブルデータ(1513,'20120711','20120807','A'). テーブルデータ(1514,'20120711','20120801','A'). テーブルデータ(1515,'20120711','20120802','A'). テーブルデータ(1516,'20120711','20120821','A'). テーブルデータ(1517,'20120711','20120731','A'). テーブルデータ(1518,'20120711','20120808','A'). テーブルデータ(1519,'20120711','20120908','A'). テーブルデータ(1520,'20120711','20120820','A'). テーブルデータ(1521,'20120712','20120725','A'). テーブルデータ(1522,'20120712','20120805','A'). テーブルデータ(1523,'20120712','20120829','A'). テーブルデータ(1524,'20120712','20120905','A'). テーブルデータ(1525,'20120712','20120809','A'). テーブルデータ(1526,'20120712','20120823','A'). テーブルデータ(1527,'20120712','20120714','A'). テーブルデータ(1528,'20120712','20120831','A'). テーブルデータ(1529,'20120712','20120728','A'). テーブルデータ(1530,'20120712','20120824','A'). テーブルデータ(1531,'20120712','20120718','A'). テーブルデータ(1532,'20120712','20120901','A'). テーブルデータ(1533,'20120712','20120801','A'). テーブルデータ(1534,'20120712','20120905','A'). テーブルデータ(1535,'20120712','20120828','A'). テーブルデータ(1536,'20120712','20120904','A'). テーブルデータ(1537,'20120712','20120813','A'). テーブルデータ(1538,'20120712','20120722','A'). テーブルデータ(1539,'20120712','20120811','A'). テーブルデータ(1540,'20120712','20120725','A'). テーブルデータ(1541,'20120712','20120725','A'). テーブルデータ(1542,'20120712','20120731','A'). テーブルデータ(1543,'20120713','20120816','A'). テーブルデータ(1544,'20120713','20120815','A'). テーブルデータ(1545,'20120713','20120726','A'). テーブルデータ(1546,'20120713','20120905','A'). テーブルデータ(1547,'20120713','20120715','A'). テーブルデータ(1548,'20120713','20120717','A'). テーブルデータ(1549,'20120713','20120817','A'). テーブルデータ(1550,'20120713','20120805','A'). テーブルデータ(1551,'20120713','20120731','A'). テーブルデータ(1552,'20120713','20120902','A'). テーブルデータ(1553,'20120713','20120724','A'). テーブルデータ(1554,'20120714','20120725','A'). テーブルデータ(1555,'20120714','20120828','A'). テーブルデータ(1556,'20120714','20120722','A'). テーブルデータ(1557,'20120714','20120715','A'). テーブルデータ(1558,'20120714','20120905','A'). テーブルデータ(1559,'20120714','20120826','A'). テーブルデータ(1560,'20120714','20120911','A'). テーブルデータ(1561,'20120714','20120820','A'). テーブルデータ(1562,'20120714','20120907','A'). テーブルデータ(1563,'20120714','20120906','A'). テーブルデータ(1564,'20120714','20120807','A'). テーブルデータ(1565,'20120714','20120901','A'). テーブルデータ(1566,'20120714','20120809','A'). テーブルデータ(1567,'20120714','20120810','A'). テーブルデータ(1568,'20120715','20120815','A'). テーブルデータ(1569,'20120715','20120824','A'). テーブルデータ(1570,'20120715','20120815','A'). テーブルデータ(1571,'20120715','20120718','A'). テーブルデータ(1572,'20120715','20120722','A'). テーブルデータ(1573,'20120715','20120910','A'). テーブルデータ(1574,'20120715','20120731','A'). テーブルデータ(1575,'20120715','20120906','A'). テーブルデータ(1576,'20120715','20120912','A'). テーブルデータ(1577,'20120715','20120805','A'). テーブルデータ(1578,'20120715','20120804','A'). テーブルデータ(1579,'20120715','20120729','A'). テーブルデータ(1580,'20120715','20120815','A'). テーブルデータ(1581,'20120716','20120803','A'). テーブルデータ(1582,'20120716','20120821','A'). テーブルデータ(1583,'20120716','20120730','A'). テーブルデータ(1584,'20120716','20120719','A'). テーブルデータ(1585,'20120716','20120829','A'). テーブルデータ(1586,'20120716','20120723','A'). テーブルデータ(1587,'20120716','20120911','A'). テーブルデータ(1588,'20120716','20120805','A'). テーブルデータ(1589,'20120716','20120723','A'). テーブルデータ(1590,'20120716','20120819','A'). テーブルデータ(1591,'20120716','20120731','A'). テーブルデータ(1592,'20120716','20120907','A'). テーブルデータ(1593,'20120717','20120912','A'). テーブルデータ(1594,'20120717','20120729','A'). テーブルデータ(1595,'20120717','20120726','A'). テーブルデータ(1596,'20120717','20120726','A'). テーブルデータ(1597,'20120717','20120829','A'). テーブルデータ(1598,'20120717','20120905','A'). テーブルデータ(1599,'20120717','20120818','A'). テーブルデータ(1600,'20120717','20120902','A'). テーブルデータ(1601,'20120717','20120904','A'). テーブルデータ(1602,'20120717','20120815','A'). テーブルデータ(1603,'20120717','20120910','A'). テーブルデータ(1604,'20120717','20120828','A'). テーブルデータ(1605,'20120717','20120806','A'). テーブルデータ(1606,'20120717','20120725','A'). テーブルデータ(1607,'20120717','20120720','A'). テーブルデータ(1608,'20120717','20120821','A'). テーブルデータ(1609,'20120717','20120825','A'). テーブルデータ(1610,'20120717','20120723','A'). テーブルデータ(1611,'20120717','20120831','A'). テーブルデータ(1612,'20120717','20120802','A'). テーブルデータ(1613,'20120717','20120730','A'). テーブルデータ(1614,'20120718','20120908','A'). テーブルデータ(1615,'20120718','20120807','A'). テーブルデータ(1616,'20120718','20120824','A'). テーブルデータ(1617,'20120718','20120722','A'). テーブルデータ(1618,'20120718','20120814','A'). テーブルデータ(1619,'20120718','20120721','A'). テーブルデータ(1620,'20120718','20120807','A'). テーブルデータ(1621,'20120718','20120808','A'). テーブルデータ(1622,'20120718','20120902','A'). テーブルデータ(1623,'20120718','20120804','A'). テーブルデータ(1624,'20120718','20120812','A'). テーブルデータ(1625,'20120719','20120806','A'). テーブルデータ(1626,'20120719','20120727','A'). テーブルデータ(1627,'20120719','20120817','A'). テーブルデータ(1628,'20120719','20120907','A'). テーブルデータ(1629,'20120719','20120904','A'). テーブルデータ(1630,'20120719','20120806','A'). テーブルデータ(1631,'20120719','20120808','A'). テーブルデータ(1632,'20120719','20120831','A'). テーブルデータ(1633,'20120719','20120720','A'). テーブルデータ(1634,'20120719','20120828','A'). テーブルデータ(1635,'20120719','20120831','A'). テーブルデータ(1636,'20120719','20120913','A'). テーブルデータ(1637,'20120719','20120726','A'). テーブルデータ(1638,'20120719','20120811','A'). テーブルデータ(1639,'20120719','20120721','A'). テーブルデータ(1640,'20120719','20120909','A'). テーブルデータ(1641,'20120719','20120819','A'). テーブルデータ(1642,'20120719','20120803','A'). テーブルデータ(1643,'20120720','20120812','A'). テーブルデータ(1644,'20120720','20120817','A'). テーブルデータ(1645,'20120720','20120722','A'). テーブルデータ(1646,'20120720','20120817','A'). テーブルデータ(1647,'20120721','20120917','A'). テーブルデータ(1648,'20120721','20120830','A'). テーブルデータ(1649,'20120721','20120729','A'). テーブルデータ(1650,'20120721','20120826','A'). テーブルデータ(1651,'20120721','20120908','A'). テーブルデータ(1652,'20120721','20120823','A'). テーブルデータ(1653,'20120721','20120813','A'). テーブルデータ(1654,'20120721','20120728','A'). テーブルデータ(1655,'20120721','20120824','A'). テーブルデータ(1656,'20120721','20120912','A'). テーブルデータ(1657,'20120721','20120916','A'). テーブルデータ(1658,'20120721','20120811','A'). テーブルデータ(1659,'20120721','20120724','A'). テーブルデータ(1660,'20120721','20120730','A'). テーブルデータ(1661,'20120721','20120915','A'). テーブルデータ(1662,'20120721','20120725','A'). テーブルデータ(1663,'20120721','20120901','A'). テーブルデータ(1664,'20120721','20120830','A'). テーブルデータ(1665,'20120721','20120911','A'). テーブルデータ(1666,'20120721','20120908','A'). テーブルデータ(1667,'20120721','20120914','A'). テーブルデータ(1668,'20120721','20120906','A'). テーブルデータ(1669,'20120721','20120824','A'). テーブルデータ(1670,'20120721','20120816','A'). テーブルデータ(1671,'20120721','20120913','A'). テーブルデータ(1672,'20120721','20120918','A'). テーブルデータ(1673,'20120722','20120813','A'). テーブルデータ(1674,'20120722','20120913','A'). テーブルデータ(1675,'20120722','20120723','A'). テーブルデータ(1676,'20120722','20120809','A'). テーブルデータ(1677,'20120722','20120911','A'). テーブルデータ(1678,'20120722','20120824','A'). テーブルデータ(1679,'20120722','20120809','A'). テーブルデータ(1680,'20120722','20120810','A'). テーブルデータ(1681,'20120722','20120813','A'). テーブルデータ(1682,'20120722','20120904','A'). テーブルデータ(1683,'20120722','20120826','A'). テーブルデータ(1684,'20120722','20120812','A'). テーブルデータ(1685,'20120723','20120812','A'). テーブルデータ(1686,'20120723','20120803','A'). テーブルデータ(1687,'20120723','20120815','A'). テーブルデータ(1688,'20120723','20120815','A'). テーブルデータ(1689,'20120723','20120812','A'). テーブルデータ(1690,'20120723','20120812','A'). テーブルデータ(1691,'20120723','20120812','A'). テーブルデータ(1692,'20120723','20120725','A'). テーブルデータ(1693,'20120723','20120913','A'). テーブルデータ(1694,'20120723','20120804','A'). テーブルデータ(1695,'20120723','20120905','A'). テーブルデータ(1696,'20120724','20120921','A'). テーブルデータ(1697,'20120724','20120811','A'). テーブルデータ(1698,'20120724','20120729','A'). テーブルデータ(1699,'20120724','20120916','A'). テーブルデータ(1700,'20120724','20120810','A'). テーブルデータ(1701,'20120724','20120831','A'). テーブルデータ(1702,'20120724','20120809','A'). テーブルデータ(1703,'20120724','20120803','A'). テーブルデータ(1704,'20120724','20120902','A'). テーブルデータ(1705,'20120724','20120819','A'). テーブルデータ(1706,'20120724','20120916','A'). テーブルデータ(1707,'20120724','20120806','A'). テーブルデータ(1708,'20120724','20120830','A'). テーブルデータ(1709,'20120724','20120729','A'). テーブルデータ(1710,'20120724','20120821','A'). テーブルデータ(1711,'20120724','20120814','A'). テーブルデータ(1712,'20120724','20120902','A'). テーブルデータ(1713,'20120724','20120911','A'). テーブルデータ(1714,'20120725','20120725','A'). テーブルデータ(1715,'20120725','20120915','A'). テーブルデータ(1716,'20120725','20120909','A'). テーブルデータ(1717,'20120725','20120818','A'). テーブルデータ(1718,'20120725','20120807','A'). テーブルデータ(1719,'20120725','20120921','A'). テーブルデータ(1720,'20120725','20120830','A'). テーブルデータ(1721,'20120725','20120801','A'). テーブルデータ(1722,'20120725','20120913','A'). テーブルデータ(1723,'20120725','20120911','A'). テーブルデータ(1724,'20120725','20120914','A'). テーブルデータ(1725,'20120725','20120823','A'). テーブルデータ(1726,'20120725','20120911','A'). テーブルデータ(1727,'20120725','20120726','A'). テーブルデータ(1728,'20120725','20120820','A'). テーブルデータ(1729,'20120725','20120828','A'). テーブルデータ(1730,'20120725','20120812','A'). テーブルデータ(1731,'20120725','20120730','A'). テーブルデータ(1732,'20120725','20120913','A'). テーブルデータ(1733,'20120725','20120815','A'). テーブルデータ(1734,'20120725','20120908','A'). テーブルデータ(1735,'20120725','20120803','A'). テーブルデータ(1736,'20120725','20120801','A'). テーブルデータ(1737,'20120725','20120913','A'). テーブルデータ(1738,'20120726','20120807','A'). テーブルデータ(1739,'20120726','20120813','A'). テーブルデータ(1740,'20120726','20120923','A'). テーブルデータ(1741,'20120726','20120909','A'). テーブルデータ(1742,'20120726','20120726','A'). テーブルデータ(1743,'20120726','20120817','A'). テーブルデータ(1744,'20120726','20120901','A'). テーブルデータ(1745,'20120726','20120916','A'). テーブルデータ(1746,'20120726','20120803','A'). テーブルデータ(1747,'20120726','20120727','A'). テーブルデータ(1748,'20120726','20120921','A'). テーブルデータ(1749,'20120726','20120802','A'). テーブルデータ(1750,'20120726','20120824','A'). テーブルデータ(1751,'20120726','20120921','A'). テーブルデータ(1752,'20120726','20120913','A'). テーブルデータ(1753,'20120726','20120813','A'). テーブルデータ(1754,'20120726','20120912','A'). テーブルデータ(1755,'20120727','20120923','A'). テーブルデータ(1756,'20120727','20120915','A'). テーブルデータ(1757,'20120727','20120910','A'). テーブルデータ(1758,'20120727','20120828','A'). テーブルデータ(1759,'20120727','20120727','A'). テーブルデータ(1760,'20120727','20120907','A'). テーブルデータ(1761,'20120727','20120810','A'). テーブルデータ(1762,'20120727','20120809','A'). テーブルデータ(1763,'20120727','20120823','A'). テーブルデータ(1764,'20120727','20120819','A'). テーブルデータ(1765,'20120727','20120816','A'). テーブルデータ(1766,'20120727','20120806','A'). テーブルデータ(1767,'20120727','20120728','A'). テーブルデータ(1768,'20120727','20120821','A'). テーブルデータ(1769,'20120727','20120824','A'). テーブルデータ(1770,'20120727','20120727','A'). テーブルデータ(1771,'20120727','20120806','A'). テーブルデータ(1772,'20120727','20120816','A'). テーブルデータ(1773,'20120727','20120810','A'). テーブルデータ(1774,'20120727','20120912','A'). テーブルデータ(1775,'20120728','20120820','A'). テーブルデータ(1776,'20120728','20120907','A'). テーブルデータ(1777,'20120728','20120920','A'). テーブルデータ(1778,'20120728','20120819','A'). テーブルデータ(1779,'20120728','20120807','A'). テーブルデータ(1780,'20120728','20120917','A'). テーブルデータ(1781,'20120729','20120818','A'). テーブルデータ(1782,'20120729','20120907','A'). テーブルデータ(1783,'20120729','20120812','A'). テーブルデータ(1784,'20120729','20120816','A'). テーブルデータ(1785,'20120730','20120920','A'). テーブルデータ(1786,'20120730','20120918','A'). テーブルデータ(1787,'20120730','20120821','A'). テーブルデータ(1788,'20120730','20120902','A'). テーブルデータ(1789,'20120730','20120804','A'). テーブルデータ(1790,'20120730','20120827','A'). テーブルデータ(1791,'20120730','20120922','A'). テーブルデータ(1792,'20120730','20120819','A'). テーブルデータ(1793,'20120730','20120916','A'). テーブルデータ(1794,'20120730','20120803','A'). テーブルデータ(1795,'20120730','20120821','A'). テーブルデータ(1796,'20120730','20120804','A'). テーブルデータ(1797,'20120730','20120823','A'). テーブルデータ(1798,'20120730','20120821','A'). テーブルデータ(1799,'20120730','20120806','A'). テーブルデータ(1800,'20120730','20120913','A'). テーブルデータ(1801,'20120730','20120905','A'). テーブルデータ(1802,'20120730','20120923','A'). テーブルデータ(1803,'20120730','20120910','A'). テーブルデータ(1804,'20120730','20120920','A'). テーブルデータ(1805,'20120730','20120827','A'). テーブルデータ(1806,'20120730','20120904','A'). テーブルデータ(1807,'20120730','20120805','A'). テーブルデータ(1808,'20120731','20120820','A'). テーブルデータ(1809,'20120801','20120921','A'). テーブルデータ(1810,'20120801','20120922','A'). テーブルデータ(1811,'20120801','20120817','A'). テーブルデータ(1812,'20120801','20120810','A'). テーブルデータ(1813,'20120801','20120815','A'). テーブルデータ(1814,'20120801','20120809','A'). テーブルデータ(1815,'20120801','20120922','A'). テーブルデータ(1816,'20120801','20120829','A'). テーブルデータ(1817,'20120801','20120912','A'). テーブルデータ(1818,'20120801','20120927','A'). テーブルデータ(1819,'20120802','20120907','A'). テーブルデータ(1820,'20120802','20120819','A'). テーブルデータ(1821,'20120802','20120908','A'). テーブルデータ(1822,'20120802','20120911','A'). テーブルデータ(1823,'20120802','20120910','A'). テーブルデータ(1824,'20120802','20120905','A'). テーブルデータ(1825,'20120802','20120807','A'). テーブルデータ(1826,'20120802','20120925','A'). テーブルデータ(1827,'20120802','20120913','A'). テーブルデータ(1828,'20120802','20120913','A'). テーブルデータ(1829,'20120802','20120825','A'). テーブルデータ(1830,'20120802','20120831','A'). テーブルデータ(1831,'20120802','20120818','A'). テーブルデータ(1832,'20120802','20120817','A'). テーブルデータ(1833,'20120802','20120928','A'). テーブルデータ(1834,'20120802','20120915','A'). テーブルデータ(1835,'20120802','20120815','A'). テーブルデータ(1836,'20120802','20120821','A'). テーブルデータ(1837,'20120802','20120806','A'). テーブルデータ(1838,'20120803','20120813','A'). テーブルデータ(1839,'20120803','20120928','A'). テーブルデータ(1840,'20120803','20120902','A'). テーブルデータ(1841,'20120803','20120815','A'). テーブルデータ(1842,'20120803','20120805','A'). テーブルデータ(1843,'20120803','20120910','A'). テーブルデータ(1844,'20120803','20120807','A'). テーブルデータ(1845,'20120803','20120826','A'). テーブルデータ(1846,'20120803','20120824','A'). テーブルデータ(1847,'20120803','20120804','A'). テーブルデータ(1848,'20120803','20120814','A'). テーブルデータ(1849,'20120803','20120921','A'). テーブルデータ(1850,'20120803','20120813','A'). テーブルデータ(1851,'20120803','20120912','A'). テーブルデータ(1852,'20120803','20120902','A'). テーブルデータ(1853,'20120804','20120819','A'). テーブルデータ(1854,'20120804','20120831','A'). テーブルデータ(1855,'20120804','20120909','A'). テーブルデータ(1856,'20120804','20120922','A'). テーブルデータ(1857,'20120804','20120805','A'). テーブルデータ(1858,'20120804','20121002','A'). テーブルデータ(1859,'20120804','20120822','A'). テーブルデータ(1860,'20120804','20120821','A'). テーブルデータ(1861,'20120804','20120810','A'). テーブルデータ(1862,'20120804','20120819','A'). テーブルデータ(1863,'20120804','20120805','A'). テーブルデータ(1864,'20120804','20120815','A'). テーブルデータ(1865,'20120804','20120907','A'). テーブルデータ(1866,'20120805','20120830','A'). テーブルデータ(1867,'20120805','20120911','A'). テーブルデータ(1868,'20120805','20120920','A'). テーブルデータ(1869,'20120805','20120930','A'). テーブルデータ(1870,'20120805','20120923','A'). テーブルデータ(1871,'20120805','20120915','A'). テーブルデータ(1872,'20120805','20120908','A'). テーブルデータ(1873,'20120805','20120927','A'). テーブルデータ(1874,'20120805','20120930','A'). テーブルデータ(1875,'20120805','20120921','A'). テーブルデータ(1876,'20120805','20120920','A'). テーブルデータ(1877,'20120805','20121003','A'). テーブルデータ(1878,'20120805','20120911','A'). テーブルデータ(1879,'20120805','20120930','A'). テーブルデータ(1880,'20120805','20120914','A'). テーブルデータ(1881,'20120805','20121003','A'). テーブルデータ(1882,'20120805','20120904','A'). テーブルデータ(1883,'20120805','20120921','A'). テーブルデータ(1884,'20120805','20120831','A'). テーブルデータ(1885,'20120805','20120811','A'). テーブルデータ(1886,'20120805','20120902','A'). テーブルデータ(1887,'20120805','20120901','A'). テーブルデータ(1888,'20120805','20121001','A'). テーブルデータ(1889,'20120805','20120920','A'). テーブルデータ(1890,'20120805','20120910','A'). テーブルデータ(1891,'20120805','20120929','A'). テーブルデータ(1892,'20120805','20120927','A'). テーブルデータ(1893,'20120805','20120911','A'). テーブルデータ(1894,'20120805','20120811','A'). テーブルデータ(1895,'20120806','20120902','A'). テーブルデータ(1896,'20120806','20120907','A'). テーブルデータ(1897,'20120806','20121001','A'). テーブルデータ(1898,'20120806','20120820','A'). テーブルデータ(1899,'20120806','20120826','A'). テーブルデータ(1900,'20120806','20120912','A'). テーブルデータ(1901,'20120806','20120930','A'). テーブルデータ(1902,'20120806','20120929','A'). テーブルデータ(1903,'20120806','20120905','A'). テーブルデータ(1904,'20120806','20120926','A'). テーブルデータ(1905,'20120806','20120917','A'). テーブルデータ(1906,'20120806','20120814','A'). テーブルデータ(1907,'20120806','20120925','A'). テーブルデータ(1908,'20120806','20120817','A'). テーブルデータ(1909,'20120806','20120811','A'). テーブルデータ(1910,'20120806','20120828','A'). テーブルデータ(1911,'20120806','20120816','A'). テーブルデータ(1912,'20120806','20120902','A'). テーブルデータ(1913,'20120806','20120807','A'). テーブルデータ(1914,'20120806','20120911','A'). テーブルデータ(1915,'20120807','20120905','A'). テーブルデータ(1916,'20120807','20121001','A'). テーブルデータ(1917,'20120807','20120830','A'). テーブルデータ(1918,'20120807','20120822','A'). テーブルデータ(1919,'20120807','20120907','A'). テーブルデータ(1920,'20120808','20120808','A'). テーブルデータ(1921,'20120808','20120808','A'). テーブルデータ(1922,'20120808','20120825','A'). テーブルデータ(1923,'20120808','20120828','A'). テーブルデータ(1924,'20120808','20120905','A'). テーブルデータ(1925,'20120808','20120918','A'). テーブルデータ(1926,'20120808','20120824','A'). テーブルデータ(1927,'20120808','20120911','A'). テーブルデータ(1928,'20120808','20120809','A'). テーブルデータ(1929,'20120808','20121001','A'). テーブルデータ(1930,'20120808','20120906','A'). テーブルデータ(1931,'20120808','20120925','A'). テーブルデータ(1932,'20120809','20120821','A'). テーブルデータ(1933,'20120809','20120831','A'). テーブルデータ(1934,'20120809','20120903','A'). テーブルデータ(1935,'20120809','20120811','A'). テーブルデータ(1936,'20120809','20120911','A'). テーブルデータ(1937,'20120809','20120831','A'). テーブルデータ(1938,'20120809','20120826','A'). テーブルデータ(1939,'20120809','20120921','A'). テーブルデータ(1940,'20120809','20120927','A'). テーブルデータ(1941,'20120809','20120819','A'). テーブルデータ(1942,'20120809','20120820','A'). テーブルデータ(1943,'20120809','20120824','A'). テーブルデータ(1944,'20120809','20120918','A'). テーブルデータ(1945,'20120809','20120815','A'). テーブルデータ(1946,'20120809','20120917','A'). テーブルデータ(1947,'20120809','20120925','A'). テーブルデータ(1948,'20120809','20120907','A'). テーブルデータ(1949,'20120810','20120927','A'). テーブルデータ(1950,'20120810','20120908','A'). テーブルデータ(1951,'20120810','20121008','A'). テーブルデータ(1952,'20120810','20120818','A'). テーブルデータ(1953,'20120810','20120928','A'). テーブルデータ(1954,'20120810','20120912','A'). テーブルデータ(1955,'20120810','20120826','A'). テーブルデータ(1956,'20120810','20120902','A'). テーブルデータ(1957,'20120810','20120905','A'). テーブルデータ(1958,'20120810','20120820','A'). テーブルデータ(1959,'20120810','20120923','A'). テーブルデータ(1960,'20120810','20120824','A'). テーブルデータ(1961,'20120810','20120829','A'). テーブルデータ(1962,'20120811','20120916','A'). テーブルデータ(1963,'20120811','20120924','A'). テーブルデータ(1964,'20120811','20121001','A'). テーブルデータ(1965,'20120811','20120820','A'). テーブルデータ(1966,'20120811','20121008','A'). テーブルデータ(1967,'20120811','20120811','A'). テーブルデータ(1968,'20120811','20120924','A'). テーブルデータ(1969,'20120811','20120919','A'). テーブルデータ(1970,'20120811','20120821','A'). テーブルデータ(1971,'20120811','20121005','A'). テーブルデータ(1972,'20120811','20121005','A'). テーブルデータ(1973,'20120811','20120930','A'). テーブルデータ(1974,'20120811','20120812','A'). テーブルデータ(1975,'20120811','20120906','A'). テーブルデータ(1976,'20120811','20120910','A'). テーブルデータ(1977,'20120811','20120902','A'). テーブルデータ(1978,'20120811','20120819','A'). テーブルデータ(1979,'20120811','20120829','A'). テーブルデータ(1980,'20120811','20120924','A'). テーブルデータ(1981,'20120811','20121009','A'). テーブルデータ(1982,'20120811','20120829','A'). テーブルデータ(1983,'20120811','20120913','A'). テーブルデータ(1984,'20120811','20120904','A'). テーブルデータ(1985,'20120811','20120914','A'). テーブルデータ(1986,'20120811','20120929','A'). テーブルデータ(1987,'20120811','20121001','A'). テーブルデータ(1988,'20120811','20120917','A'). テーブルデータ(1989,'20120812','20121008','A'). テーブルデータ(1990,'20120812','20121007','A'). テーブルデータ(1991,'20120812','20120903','A'). テーブルデータ(1992,'20120812','20120915','A'). テーブルデータ(1993,'20120812','20120913','A'). テーブルデータ(1994,'20120812','20120817','A'). テーブルデータ(1995,'20120812','20120916','A'). テーブルデータ(1996,'20120812','20120911','A'). テーブルデータ(1997,'20120812','20120817','A'). テーブルデータ(1998,'20120812','20120824','A'). テーブルデータ(1999,'20120812','20120821','A'). テーブルデータ(2000,'20120812','20120819','A'). テーブルデータ(2001,'20120812','20120819','A'). テーブルデータ(2002,'20120812','20121007','A'). テーブルデータ(2003,'20120812','20121009','A'). テーブルデータ(2004,'20120812','20120813','A'). テーブルデータ(2005,'20120812','20120903','A'). テーブルデータ(2006,'20120812','20120901','A'). テーブルデータ(2007,'20120812','20120904','A'). テーブルデータ(2008,'20120812','20120903','A'). テーブルデータ(2009,'20120812','20120919','A'). テーブルデータ(2010,'20120812','20120819','A'). テーブルデータ(2011,'20120812','20120826','A'). テーブルデータ(2012,'20120812','20121007','A'). テーブルデータ(2013,'20120812','20120914','A'). テーブルデータ(2014,'20120812','20120919','A'). テーブルデータ(2015,'20120813','20120827','A'). テーブルデータ(2016,'20120814','20120821','A'). テーブルデータ(2017,'20120814','20120922','A'). テーブルデータ(2018,'20120814','20120910','A'). テーブルデータ(2019,'20120814','20121008','A'). テーブルデータ(2020,'20120814','20120815','A'). テーブルデータ(2021,'20120814','20121006','A'). テーブルデータ(2022,'20120814','20120910','A'). テーブルデータ(2023,'20120814','20121011','A'). テーブルデータ(2024,'20120814','20120903','A'). テーブルデータ(2025,'20120814','20121002','A'). テーブルデータ(2026,'20120814','20121008','A'). テーブルデータ(2027,'20120814','20120915','A'). テーブルデータ(2028,'20120814','20121004','A'). テーブルデータ(2029,'20120814','20120817','A'). テーブルデータ(2030,'20120814','20120915','A'). テーブルデータ(2031,'20120814','20120930','A'). テーブルデータ(2032,'20120814','20121006','A'). テーブルデータ(2033,'20120814','20120916','A'). テーブルデータ(2034,'20120814','20120816','A'). テーブルデータ(2035,'20120814','20120827','A'). テーブルデータ(2036,'20120814','20121001','A'). テーブルデータ(2037,'20120814','20120830','A'). テーブルデータ(2038,'20120814','20121004','A'). テーブルデータ(2039,'20120814','20121009','A'). テーブルデータ(2040,'20120814','20120913','A'). テーブルデータ(2041,'20120814','20120922','A'). テーブルデータ(2042,'20120814','20120904','A'). テーブルデータ(2043,'20120814','20120823','A'). テーブルデータ(2044,'20120814','20120815','A'). テーブルデータ(2045,'20120814','20120918','A'). テーブルデータ(2046,'20120815','20120824','A'). テーブルデータ(2047,'20120816','20121004','A'). テーブルデータ(2048,'20120816','20121011','A'). テーブルデータ(2049,'20120816','20120824','A'). テーブルデータ(2050,'20120816','20120927','A'). テーブルデータ(2051,'20120816','20120909','A'). テーブルデータ(2052,'20120816','20120822','A'). テーブルデータ(2053,'20120816','20121010','A'). テーブルデータ(2054,'20120816','20120829','A'). テーブルデータ(2055,'20120816','20121009','A'). テーブルデータ(2056,'20120816','20120912','A'). テーブルデータ(2057,'20120816','20120820','A'). テーブルデータ(2058,'20120816','20121012','A'). テーブルデータ(2059,'20120816','20121006','A'). テーブルデータ(2060,'20120816','20120929','A'). テーブルデータ(2061,'20120816','20121005','A'). テーブルデータ(2062,'20120817','20120924','A'). テーブルデータ(2063,'20120817','20120820','A'). テーブルデータ(2064,'20120817','20120830','A'). テーブルデータ(2065,'20120817','20121010','A'). テーブルデータ(2066,'20120817','20121002','A'). テーブルデータ(2067,'20120817','20120818','A'). テーブルデータ(2068,'20120817','20120911','A'). テーブルデータ(2069,'20120817','20120911','A'). テーブルデータ(2070,'20120817','20120831','A'). テーブルデータ(2071,'20120817','20120912','A'). テーブルデータ(2072,'20120817','20120912','A'). テーブルデータ(2073,'20120817','20121005','A'). テーブルデータ(2074,'20120817','20121012','A'). テーブルデータ(2075,'20120817','20120913','A'). テーブルデータ(2076,'20120817','20121011','A'). テーブルデータ(2077,'20120817','20121002','A'). テーブルデータ(2078,'20120817','20120910','A'). テーブルデータ(2079,'20120817','20120820','A'). テーブルデータ(2080,'20120817','20120906','A'). テーブルデータ(2081,'20120817','20120926','A'). テーブルデータ(2082,'20120817','20120819','A'). テーブルデータ(2083,'20120817','20120901','A'). テーブルデータ(2084,'20120817','20121009','A'). テーブルデータ(2085,'20120817','20121004','A'). テーブルデータ(2086,'20120817','20120921','A'). テーブルデータ(2087,'20120818','20121002','A'). テーブルデータ(2088,'20120818','20120913','A'). テーブルデータ(2089,'20120818','20120913','A'). テーブルデータ(2090,'20120818','20120914','A'). テーブルデータ(2091,'20120818','20120930','A'). テーブルデータ(2092,'20120818','20120822','A'). テーブルデータ(2093,'20120818','20120917','A'). テーブルデータ(2094,'20120818','20121005','A'). テーブルデータ(2095,'20120818','20121007','A'). テーブルデータ(2096,'20120818','20120826','A'). テーブルデータ(2097,'20120818','20120928','A'). テーブルデータ(2098,'20120818','20120902','A'). テーブルデータ(2099,'20120818','20120920','A'). テーブルデータ(2100,'20120818','20121012','A'). テーブルデータ(2101,'20120818','20120928','A'). テーブルデータ(2102,'20120818','20121008','A'). テーブルデータ(2103,'20120818','20121001','A'). テーブルデータ(2104,'20120818','20120917','A'). テーブルデータ(2105,'20120818','20120829','A'). テーブルデータ(2106,'20120818','20120918','A'). テーブルデータ(2107,'20120818','20120826','A'). テーブルデータ(2108,'20120819','20120915','A'). テーブルデータ(2109,'20120819','20120916','A'). テーブルデータ(2110,'20120819','20120903','A'). テーブルデータ(2111,'20120819','20120909','A'). テーブルデータ(2112,'20120819','20120924','A'). テーブルデータ(2113,'20120819','20120819','A'). テーブルデータ(2114,'20120820','20120831','A'). テーブルデータ(2115,'20120820','20121001','A'). テーブルデータ(2116,'20120820','20121013','A'). テーブルデータ(2117,'20120820','20120918','A'). テーブルデータ(2118,'20120820','20120820','A'). テーブルデータ(2119,'20120820','20120910','A'). テーブルデータ(2120,'20120820','20120824','A'). テーブルデータ(2121,'20120820','20120824','A'). テーブルデータ(2122,'20120820','20121002','A'). テーブルデータ(2123,'20120820','20121011','A'). テーブルデータ(2124,'20120821','20121011','A'). テーブルデータ(2125,'20120821','20120923','A'). テーブルデータ(2126,'20120821','20120823','A'). テーブルデータ(2127,'20120821','20120906','A'). テーブルデータ(2128,'20120821','20120910','A'). テーブルデータ(2129,'20120821','20120926','A'). テーブルデータ(2130,'20120821','20121019','A'). テーブルデータ(2131,'20120821','20121016','A'). テーブルデータ(2132,'20120821','20121018','A'). テーブルデータ(2133,'20120821','20120831','A'). テーブルデータ(2134,'20120821','20120918','A'). テーブルデータ(2135,'20120821','20120827','A'). テーブルデータ(2136,'20120821','20120927','A'). テーブルデータ(2137,'20120821','20121015','A'). テーブルデータ(2138,'20120821','20120924','A'). テーブルデータ(2139,'20120821','20121004','A'). テーブルデータ(2140,'20120821','20120906','A'). テーブルデータ(2141,'20120821','20120831','A'). テーブルデータ(2142,'20120821','20121005','A'). テーブルデータ(2143,'20120821','20120915','A'). テーブルデータ(2144,'20120821','20120903','A'). テーブルデータ(2145,'20120821','20120909','A'). テーブルデータ(2146,'20120821','20120901','A'). テーブルデータ(2147,'20120821','20120925','A'). テーブルデータ(2148,'20120821','20120910','A'). テーブルデータ(2149,'20120821','20120914','A'). テーブルデータ(2150,'20120822','20120907','A'). テーブルデータ(2151,'20120822','20120829','A'). テーブルデータ(2152,'20120822','20120915','A'). テーブルデータ(2153,'20120822','20120825','A'). テーブルデータ(2154,'20120822','20121011','A'). テーブルデータ(2155,'20120822','20121010','A'). テーブルデータ(2156,'20120822','20120828','A'). テーブルデータ(2157,'20120822','20120828','A'). テーブルデータ(2158,'20120822','20120901','A'). テーブルデータ(2159,'20120822','20120925','A'). テーブルデータ(2160,'20120823','20121020','A'). テーブルデータ(2161,'20120823','20120924','A'). テーブルデータ(2162,'20120823','20120831','A'). テーブルデータ(2163,'20120823','20120918','A'). テーブルデータ(2164,'20120823','20120930','A'). テーブルデータ(2165,'20120823','20121007','A'). テーブルデータ(2166,'20120824','20120828','A'). テーブルデータ(2167,'20120824','20120923','A'). テーブルデータ(2168,'20120824','20120914','A'). テーブルデータ(2169,'20120824','20120831','A'). テーブルデータ(2170,'20120824','20120831','A'). テーブルデータ(2171,'20120824','20121001','A'). テーブルデータ(2172,'20120824','20120913','A'). テーブルデータ(2173,'20120824','20120911','A'). テーブルデータ(2174,'20120824','20121012','A'). テーブルデータ(2175,'20120824','20121010','A'). テーブルデータ(2176,'20120824','20121001','A'). テーブルデータ(2177,'20120824','20120906','A'). テーブルデータ(2178,'20120824','20120912','A'). テーブルデータ(2179,'20120824','20121010','A'). テーブルデータ(2180,'20120825','20120929','A'). テーブルデータ(2181,'20120825','20121014','A'). テーブルデータ(2182,'20120825','20120827','A'). テーブルデータ(2183,'20120825','20120918','A'). テーブルデータ(2184,'20120825','20121012','A'). テーブルデータ(2185,'20120825','20120825','A'). テーブルデータ(2186,'20120825','20120920','A'). テーブルデータ(2187,'20120825','20120916','A'). テーブルデータ(2188,'20120825','20120831','A'). テーブルデータ(2189,'20120825','20120919','A'). テーブルデータ(2190,'20120825','20121010','A'). テーブルデータ(2191,'20120825','20120831','A'). テーブルデータ(2192,'20120825','20121007','A'). テーブルデータ(2193,'20120826','20121016','A'). テーブルデータ(2194,'20120826','20121022','A'). テーブルデータ(2195,'20120826','20120916','A'). テーブルデータ(2196,'20120826','20120908','A'). テーブルデータ(2197,'20120826','20120905','A'). テーブルデータ(2198,'20120826','20120923','A'). テーブルデータ(2199,'20120826','20120907','A'). テーブルデータ(2200,'20120826','20121014','A'). テーブルデータ(2201,'20120826','20121005','A'). テーブルデータ(2202,'20120826','20120926','A'). テーブルデータ(2203,'20120826','20120925','A'). テーブルデータ(2204,'20120826','20120923','A'). テーブルデータ(2205,'20120826','20120827','A'). テーブルデータ(2206,'20120826','20121001','A'). テーブルデータ(2207,'20120826','20121012','A'). テーブルデータ(2208,'20120826','20121013','A'). テーブルデータ(2209,'20120826','20121013','A'). テーブルデータ(2210,'20120826','20120917','A'). テーブルデータ(2211,'20120826','20120926','A'). テーブルデータ(2212,'20120826','20121008','A'). テーブルデータ(2213,'20120826','20121003','A'). テーブルデータ(2214,'20120826','20120914','A'). テーブルデータ(2215,'20120826','20121008','A'). テーブルデータ(2216,'20120826','20120831','A'). テーブルデータ(2217,'20120826','20120929','A'). テーブルデータ(2218,'20120827','20120918','A'). テーブルデータ(2219,'20120827','20120908','A'). テーブルデータ(2220,'20120827','20121013','A'). テーブルデータ(2221,'20120827','20121023','A'). テーブルデータ(2222,'20120827','20120925','A'). テーブルデータ(2223,'20120827','20120927','A'). テーブルデータ(2224,'20120827','20121020','A'). テーブルデータ(2225,'20120827','20121016','A'). テーブルデータ(2226,'20120827','20121010','A'). テーブルデータ(2227,'20120827','20121023','A'). テーブルデータ(2228,'20120827','20120914','A'). テーブルデータ(2229,'20120827','20121023','A'). テーブルデータ(2230,'20120828','20121025','A'). テーブルデータ(2231,'20120828','20120917','A'). テーブルデータ(2232,'20120828','20120905','A'). テーブルデータ(2233,'20120828','20120923','A'). テーブルデータ(2234,'20120828','20120918','A'). テーブルデータ(2235,'20120828','20121011','A'). テーブルデータ(2236,'20120828','20120902','A'). テーブルデータ(2237,'20120828','20120830','A'). テーブルデータ(2238,'20120828','20120922','A'). テーブルデータ(2239,'20120828','20120916','A'). テーブルデータ(2240,'20120828','20120930','A'). テーブルデータ(2241,'20120828','20120905','A'). テーブルデータ(2242,'20120828','20121025','A'). テーブルデータ(2243,'20120828','20121011','A'). テーブルデータ(2244,'20120828','20121010','A'). テーブルデータ(2245,'20120828','20121022','A'). テーブルデータ(2246,'20120828','20120907','A'). テーブルデータ(2247,'20120829','20120907','A'). テーブルデータ(2248,'20120829','20120921','A'). テーブルデータ(2249,'20120829','20120902','A'). テーブルデータ(2250,'20120829','20120904','A'). テーブルデータ(2251,'20120829','20121020','A'). テーブルデータ(2252,'20120829','20121003','A'). テーブルデータ(2253,'20120829','20121021','A'). テーブルデータ(2254,'20120829','20121010','A'). テーブルデータ(2255,'20120829','20120918','A'). テーブルデータ(2256,'20120829','20121018','A'). テーブルデータ(2257,'20120829','20120829','A'). テーブルデータ(2258,'20120829','20120907','A'). テーブルデータ(2259,'20120829','20120926','A'). テーブルデータ(2260,'20120829','20121018','A'). テーブルデータ(2261,'20120829','20120927','A'). テーブルデータ(2262,'20120829','20121004','A'). テーブルデータ(2263,'20120829','20120915','A'). テーブルデータ(2264,'20120829','20121010','A'). テーブルデータ(2265,'20120829','20120919','A'). テーブルデータ(2266,'20120829','20120912','A'). テーブルデータ(2267,'20120829','20121012','A'). テーブルデータ(2268,'20120829','20121006','A'). テーブルデータ(2269,'20120829','20121002','A'). テーブルデータ(2270,'20120829','20120907','A'). テーブルデータ(2271,'20120829','20121006','A'). テーブルデータ(2272,'20120829','20120922','A'). テーブルデータ(2273,'20120830','20120920','A'). テーブルデータ(2274,'20120830','20120918','A'). テーブルデータ(2275,'20120830','20121025','A'). テーブルデータ(2276,'20120830','20121007','A'). テーブルデータ(2277,'20120830','20120919','A'). テーブルデータ(2278,'20120830','20120918','A'). テーブルデータ(2279,'20120830','20121012','A'). テーブルデータ(2280,'20120830','20120925','A'). テーブルデータ(2281,'20120830','20120902','A'). テーブルデータ(2282,'20120830','20120917','A'). テーブルデータ(2283,'20120830','20120918','A'). テーブルデータ(2284,'20120830','20121014','A'). テーブルデータ(2285,'20120830','20120929','A'). テーブルデータ(2286,'20120830','20120831','A'). テーブルデータ(2287,'20120830','20121006','A'). テーブルデータ(2288,'20120830','20120930','A'). テーブルデータ(2289,'20120830','20120928','A'). テーブルデータ(2290,'20120830','20120927','A'). テーブルデータ(2291,'20120830','20121021','A'). テーブルデータ(2292,'20120830','20120905','A'). テーブルデータ(2293,'20120830','20121006','A'). テーブルデータ(2294,'20120830','20121004','A'). テーブルデータ(2295,'20120830','20120918','A'). テーブルデータ(2296,'20120830','20121012','A'). テーブルデータ(2297,'20120830','20120918','A'). テーブルデータ(2298,'20120831','20120917','A'). テーブルデータ(2299,'20120831','20120929','A'). テーブルデータ(2300,'20120831','20120927','A'). テーブルデータ(2301,'20120831','20121003','A'). テーブルデータ(2302,'20120831','20120915','A'). テーブルデータ(2303,'20120831','20121010','A'). テーブルデータ(2304,'20120831','20121014','A'). テーブルデータ(2305,'20120831','20120911','A'). テーブルデータ(2306,'20120831','20120919','A'). テーブルデータ(2307,'20120831','20120904','A'). テーブルデータ(2308,'20120831','20121001','A'). テーブルデータ(2309,'20120831','20121024','A'). テーブルデータ(2310,'20120831','20120923','A'). テーブルデータ(2311,'20120831','20120926','A'). テーブルデータ(2312,'20120831','20120904','A'). テーブルデータ(2313,'20120831','20121012','A'). テーブルデータ(2314,'20120831','20120912','A'). テーブルデータ(2315,'20120831','20120927','A'). テーブルデータ(2316,'20120831','20121006','A'). テーブルデータ(2317,'20120831','20121011','A'). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/763 # # A Table # a1 a2 # -- -- # 1 A # 3 B # 5 C # 6 D # # B Table # b1 b2 # -- -- # 2 E # 4 F # 6 G # # を select で # a1 a2 b1 b2 # -- -- -- -- # 1 A null null # 3 B 2 E # 5 C 4 F # 6 D 6 G # # にしたいけど、どうしたらいいでしょうか? 'A テーブルの_a1をキーに、B テーブルの_b1が_aに等しいか最も近い小さな値である組と結合する。ただし対象組が見つからない時はBテーブルの二つのフィールドはnullで埋める' :- 'A テーブルの_a1をキーに'(_a1,_a2), 'B テーブルの_b1が_aに等しいか最も近い小さな値である組と結合する。ただし対象組が見つからない時はBテーブルの二つのフィールドはnullで埋める'(_a1,_b1_b2). 'A テーブルの_a1をキーに'(_a1,_a2) :- 'A テーブル'(_a1,_a2). 'B テーブルの_b1が_aに等しいか最も近い小さな値である組と結合する。ただし対象組が見つからない時はBテーブルの二つのフィールドはnullで埋める'(_a1,_b1_b2) :- setof(_b1,[_b1,_b2,_a1] ^ ( 'B Table'(_b1,_b2), _b1 @=< _a1),L1), 'Lの最大値から_b1,_b2を見つける。ただし対象組が見つからない時はBテーブルの二つのフィールドはnullで埋める'(L1,B1,B2). 'Lの最大値から_b1,_b2を見つける。ただし対象組が見つからない時はBテーブルの二つのフィールドはnullで埋める'([],'','') :- !. 'Lの最大値から_b1,_b2を見つける。ただし対象組が見つからない時はBテーブルの二つのフィールドはnullで埋める'(L,B1,B2) :- findmax(B1,( member(B1,L)),MaxB1), findmax([MaxB1,B2],( 'B Table'(MaxB1,B2)),[B1,B2]). % findmax/3 % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/763 # # A Table # a1 a2 # -- -- # 1 A # 3 B # 5 C # 6 D # # B Table # b1 b2 # -- -- # 2 E # 4 F # 6 G # # を select で # a1 a2 b1 b2 # -- -- -- -- # 1 A null null # 3 B 2 E # 5 C 4 F # 6 D 6 G # # にしたいけど、どうしたらいいでしょうか? 'A Table \n a1 a2 \n -- -- \n 1 A \n 3 B \n 5 C \n 6 D \n B Table \n b1 b2 \n -- -- \n 2 E \n 4 F \n 6 G \n を \n a1 a2 b1 b2 \n -- -- -- -- \n 1 A null null \n 3 B 2 E \n 5 C 4 F \n 6 D 6 G にしたい'(_a1,_a2,_b1,_b2) :- 'A テーブルの_aをキーにB テーブルの_b1が_aに等しいか最も近い小さな値である組と結合する。ただし対象組が見つからない時はBテーブルの二つのフィールドはnullで埋める'. 'A テーブルの_aをキーにB テーブルの_b1が_aに等しいか最も近い小さな値である組と結合する。ただし対象組が見つからない時はBテーブルの二つのフィールドはnullで埋める' :- 'A Table'(_a1,_a2), 'B Table の中で _b1 の値が _a1 に等しいか最も近い組'(_a1,_b1,_b2). 'B Table の中で _b1 の値が _a1 に等しいか最も近い組'(_a1,B1,B2) :- setof(_b1,[_b1,_b2,_a1] ^ ( 'B Table'(_b1,_b2), _b1 @=< _a1),L1), '_b1の最大値'(L1,B1,B2). '_b1の最大値'(L,'','') :- 'L が[]の時はB1,B2はそれぞれnull'(L). '_b1の最大値'(L,B1,B2) :- findmax(B1,( member(B1,L)),MaxB1), findmax([MaxB1,B2],( 'B Table'(MaxB1,B2)),[B1,B2]) 'L が[]の時はB1,B2はそれぞれnull'([]). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1337692704/70 # # 【 課題 】DB上に給与の支給テーブルがあります。 #       支店・部・課・社員番号・基本給・役職手当・残業時間 #       これらの情報をDBから読み込み、各支店ごとの部、課の合計、支店合計 #       総合計を求めなさい。最後に全ての合計を印字する事。 #       集計項目は基本給・役職手当・残業手当・総支給額の4項目とする。 # 【 形態 】1. Javaアプリケーション(main()で開始すること) # 【期限】6/17 午後20時 # 【Ver 】java version "1.7.0_02" # 【 補足 】 # 残業手当 =(基本給+役職手当)/160*1.2 # 総支給額 = 基本給+役職手当+残業手当 で計算します。 # # データベースの設定ですが # 支店varcher2(14)部varcher2(14)課varcher2(14)社員番号number(8)基本給number(20)役職手当number(20) # 残業時間number(20) # 一意キーは社員番号です # # 追試の追試課題です。 # 今晩がんばりますが、明日の21時にはメールで提出しないといけません。 # お力添えお願いします。 # 'DB上に給与の支給テーブルがあります。支店・部・課・社員番号・基本給・役職手当・残業時間、これらの情報をDBから読み込み、各支店ごとの部、課の合計、支店合計、総合計を求めなさい。 最後に全ての合計を印字する事。集計項目は基本給・役職手当・残業手当・総支給額の4項目とする。' :- 鍵ならびを生成(_支店候補,_支店_部候補,_支店_部_課候補), 支店の表示(_支店候補,_支店_部候補,_支店_部_課候補,_支店), fail; 総合計の表示. 支店の表示(_支店候補,_支店_部候補,_支店_部_課候補,_支店) :- member([_支店,_部],_支店_部候補), '支店,部の表示'(_支店_部候補,_支店_部_課候補,_支店,_部), fail. 支店の表示(_支店候補,_支店_部候補,_支店_部_課候補,_支店) :- '支店を鍵に集約'(_支店候補,_支店,_基本給,_役職手当,_残業手当,_総支給額), writef('支店集約: 支店=%t: 基本給=%t,役職手当=%t,残業手当%t,総支給額=%t\n',[_支店,_基本給,_役職手当,_残業手当,_総支給額]). '支店,部の表示'(_支店_部候補,_支店_部_課候補,_支店,_部) :- member([_支店,_部,_課],_支店_部_課候補), '支店,部,課の表示'(_支店_部_課候補,_支店,_部,_課), fail. '支店,部の表示'(_支店_部_課候補,_支店,_部) :- '支店,部を鍵に集約'(_支店_部候補,_支店,_部,_基本給,_役職手当,_残業手当,_総支給額), writef('支店・部集約: 支店=%t,部=%t: 基本給=%t,役職手当=%t,残業手当%t,総支給額=%t\n',[_支店,_部,_基本給,_役職手当,_残業手当,_総支給額]). '支店,部,課の表示'(_支店_部_課候補,_支店,_部,_課) :- '支店,部,課を鍵に集約'(_支店_部_課候補,_支店,_部,_課,_基本給,_役職手当,_残業手当,_総支給額), writef('支店・部・課集約: 支店=%t,部=%t,課=%t: 基本給=%t,役職手当=%t,残業手当%t,総支給額=%t\n',[_支店,_部,_課,_基本給,_役職手当,_残業手当,_総支給額]). 鍵ならびを生成(_支店候補,_支店_部候補,_支店_部_課候補) :- '支店を鍵'(_支店候補), '支店,部を鍵'(_支店_部候補), '支店,部,課を鍵'(_支店_部_課候補). '支店を鍵'(_支店候補) :- setof([_支店],[_支店,_部,_課,_社員番号,_基本給,_役職手当] ^ ( 給与(_支店,_,_,_社員番号,_基本給,_役職手当)),_支店候補). '支店,部を鍵'(_支店_部候補) :- setof([_支店,_部],[_支店,_部,_課,_社員番号,_基本給,_役職手当] ^ ( 給与(_支店,_部,_課,_社員番号,_基本給,_役職手当)),_支店_部候補). '支店,部,課を鍵'(_支店_部_課候補) :- setof([_支店,_部,_課],[_支店,_部,_課,_社員番号,_基本給,_役職手当] ^ ( 給与(_支店,_部,_課,_社員番号,_基本給,_役職手当)),_支店_部候補). '支店,部,課を鍵に集約'(_支店_部_課候補,_支店,_部,_課,_基本給,_役職手当,_残業手当,_総支給額) :- member([_支店,_部,_課],_支店_部_課候補), findsum([_基本給,_役職手当,_残業手当,_総支給額],( 給与(_支店,_部,_課,_社員番号,_基本給,_役職手当), _残業手当と総支給額の算出(_基本給,_役職手当,残業手当,_総支給額)), [_基本給,_役職手当,_残業手当,_総支給額]). '支店,部を鍵に集約'(_支店_部候補,_支店,_部,_基本給,_役職手当,_残業手当,_総支給額) :- member([_支店,_部],_支店_部候補), findsum([_基本給,_役職手当,_残業手当,_総支給額],( 給与(_支店,_部,_,_社員番号,_基本給,_役職手当), _残業手当と総支給額の算出(_基本給,_役職手当,残業手当,_総支給額)), [_基本給,_役職手当,_残業手当,_総支給額]). '支店を鍵に集約'(_支店候補,_支店,_基本給,_役職手当,_残業手当,_総支給額) :- member([_支店],_支店候補), findsum([_基本給,_役職手当,_残業手当,_総支給額],( 給与(_支店,_,_,_社員番号,_基本給,_役職手当), _残業手当と総支給額の算出(_基本給+_役職手当,残業手当,_総支給額)), [_基本給,_役職手当,_残業手当,_総支給額]). すべての合計(_基本給,_役職手当,_残業手当,_総支給額) :- findsum([_基本給,_役職手当,_残業手当,_総支給額],( 給与(_,_,_,_社員番号,_基本給,_役職手当), _残業手当と総支給額の算出(_基本給+_役職手当,残業手当,_総支給額)), [_基本給,_役職手当,_残業手当,_総支給額]). 残業手当と総支給額の算出(_基本給,_役職手当,_残業手当,_総支給額) :- 残業手当の算出(_基本給,_役職手当,_残業手当), 総支給額の算出(_基本給,_役職手当,_残業手当,_総支給額). 残業手当の算出(_基本給,_役職手当,_残業手当) :- _残業手当 is (_基本給+_役職手当)/160*1.2. 総支給額の算出(_基本給,_役職手当,_残業手当,_総支給額) :- _総支給額 is _基本給+_役職手当+_残業手当. % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1337692704/48 # # 【課題】売り上げをコード事に個別に集計した後に全体の合計を出しなさい。 #    <エリアコード> <県コード> <地区コード> #     A \5000 C \4000 E \7000 # A \90000 C \6500 E \8000 # A \7500 C \5500 E \4000 # A \6000 C \3000 F \2000 # A \3500 C \9000 F \6500 # A \4200 C \4500 F \3000 # A \3500 D \8000 E \3000 # A \40000 D \9500 E \4880 # B \3500 C \8000 E \4500 # B \4200 C \9500 E \5000 # # 【形態】javaアプリケーション # 【期限】6/12 お昼 # 【Ver 】java version "1.7.0_02" # 【補足】キーブレイクの処理の参考書がなくて進みません。 # ACEから切り替わるときに<E地区合計> # ACFから切り替わるときに<F地区合計><C県合計> # ADEから切り替わるときに<E地区合計><D県合計><Aエリア合計> # BCEの後に       <E地区合計><C県合計><Bエリア合計> # 最後に<A+Bエリア合計>を出力する形でお願いします。 # # 売り上げ('A',5000,'C',4000,'E',7000). 売り上げ('A',90000'C',6500','E',8000). 売り上げ('A',7500,'C',5500,'E',4000). 売り上げ('A',6000,'C',3000,'F',2000). 売り上げ('A',3500,'C',9000,'F',6500). 売り上げ('A',4200,'C',4500,'F',3000). 売り上げ('A',3500,'D',8000,'E',3000), 売り上げ('A',40000,'D',9500,'E',4880). 売り上げ('B',3500,'C',8000,'E',4500). 売り上げ('B',4200,'C',9500,'E',5000). 'エリアコード鍵'(_鍵ならび) :- findsetof(_エリアコード,( 売り上げ(_エリアコード,_,_,_,_,_)), _鍵ならび). 'エリアコード・県コード鍵'(_鍵ならび) :- findsetof([_エリアコード,_県コード],( 売り上げ(_エリアコード,_,_県コード,_,_,_)), _鍵ならび). 'エリアコード・県コード・地区コード鍵'(_鍵ならび) :- findsetof([_エリアコード,_県コード,_地区コード],( 売り上げ(_エリアコード,_,_県コード,_,_地区コード,_)), _鍵ならび). 売り上げを表示する :- 'エリアコード鍵'(_鍵ならび_1), 'エリアコード・県コード鍵'(_鍵ならび_2), 'エリアコード・県コード・地区コード鍵'(_鍵ならび_3), 売り上げ集約を表示する(_鍵ならび_1,_鍵ならび_2,_鍵ならび_3). 売り上げ集約を表示する([],_鍵ならび_2,_鍵ならび_3) :- findsum(_金額_1,( 売り上げ(_,_金額_1,_,_,_,_)), 合計金額), writef('全エリア合計 %t 円\n',[_合計金額]),!. 売り上げ集約を表示する([_エリア鍵|R1],_鍵ならび_2,_鍵ならび_3) :- エリアで分類する(_エリア鍵,_鍵ならび_2,_鍵ならび_3), 売り上げを表示する(R1,_鍵ならび_2,_鍵ならび_3). エリアで分類する(_エリア鍵,[],_) :- findsum(_金額_1,( 売り上げ(_エリア鍵,_金額_1,_,_,_,_)), _合計金額), writef('%tエリア合計 %t 円\n',[_エリア鍵,_合計金額]),!. エリアで分類する(_エリア鍵,[[_エリア鍵,_県鍵]|R2],_鍵ならび_3) :- 県で分類する(_エリア鍵,_県鍵,_鍵ならび_3), エリアで分類する(_エリア鍵,R2,_鍵ならび_3). 県で分類する(_エリア鍵,_県鍵,[]) :- findsum(_金額_2,( 売り上げ(_エリア鍵,_1,_県鍵,_金額_2,_,_3)), _合計金額), writef('%t県合計 %t 円\n',[_県鍵,_合計金額]),!. 県で分類する(_エリア鍵,_県鍵,[[_エリア鍵,_県鍵,_地区鍵]|R3]) :- findsum(_金額_3,( 売り上げ(_エリア鍵,_1,_県鍵,_2,_地区鍵,_金額_3)), _合計金額), writef(\n'%t%t合計 %t 円 ',[_地区鍵,地区,_合計金額]), 県で分類する(_エリア鍵,_県鍵,R3). 県で分類する(_エリア鍵,_県鍵,[_|R3]) :- 県で分類する(_エリア鍵,_県鍵,R3). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/729 # # DBはSQLiteを想定してますが、MySQLでもpostgreSQLでも全然かまいません # # # 採取リスト # |番号|名称|コード|登録日|登録者|公開| # # というテーブルがあります。 # イメージとして、とある物体がありまして、登録者が各自で次々と登録していきます。 # 各物体には登録者の間で共有されていてぶれのないコード(A-0001とか)があるものの、 # 名称に関しては、ある程度の裁量があるため、登録者によって表記にぶれが起きます。 # # |番号|名称 |コード | 登録日  |登録者|公開| # |01  |クラゲ |A-001|2012/6/1 | 田中 | 1  | # |02  |くらげ |A-001 |2012/6/2 | 鈴木 | 0  | # |03  |海月 |A-001 |2012/6/3 | 佐藤 | 1  | # |04  |クラゲ |A-001|2012/6/4 | 高橋 | 0  | # |05  |ひとで |A-002|2012/6/5 | 小林 | 0  | # # 番号はオートナンバーで主キー。 # 登録日はそのままINSERTされた日。 # 告知フラグは0か1で、外部に公開されていたら1です。 # # んで、ここから公開されてない行を抜き出すビューを作りたいんです。 # CREATE VIEW 未公開リスト (番号, 名称, コード) # AS SELECT 番号, 名称, コード FROM 採取リスト WHERE 公開 = 0 # みたいなSQLを走らせると、 # # |番号|名称  |コード| # |02  |くらげ |A-001| # |04  |クラゲ |A-001| # |05  |ひとで |A-002| # # という風になってしまいますが「くらげ」と「クラゲ」で実質的に重複してしまいます。 # これを例えば「コードを基準にして重複がないように選んだ」上で、 # 名称には、特定の登録者の名称を用いてまとめることはできないのでしょうか? # 単に、DISTINCTを使うだけでは無理なようですが・・・。 # # 未公開リスト(_番号,_名称,_コード) :- '「コードを基準にして重複がないように選んだ」上で、名称には、特定の登録者の名称を用いてまとめる'(_番号,_名称,_コード). '「コードを基準にして重複がないように選んだ」上で、名称には、特定の登録者の名称を用いてまとめる'(_番号,_名称,_コード) :- 名称を登録者で置換したコードならび(_名称を登録者で置換したコードならび), 採取リスト(_番号,_名称_1,_コード,_登録日,_登録者,0), 名称を選択(_コード,_名称_1,_名称を登録者で置換したコードならび,_名称). 名称を登録者で置換したコードならび(_重複するコードならび) :- setof(_コード,[_番号,_名称,_コード,_登録日,_登録者,_公開] ^ ( 採取リスト(_番号,_名称,_コード,_登録日,_登録者,_公開)),L1), setof([_コード,_名称],[_番号,_名称,_コード,_登録日,_登録者,_公開] ^ ( 採取リスト(_番号,_名称,_コード,_登録日,_登録者,_公開)),L2), 名称を登録者で置換したコードならび(L1,L2,_重複するコードならび),!. 名称を登録者で置換したコードならび(L1,L2,名称を登録者で置換したコードならび) :- findall([_コード,_],( member(_コード,L1), count(member([_コード,_],L2),_度数)), _度数 > 1),_重複するコードならび), 名称を早い者勝ちに登録者名に決定する(_重複するコードならび,名称を登録者で置換したコードならび),!. 名称を早い者勝ちに登録者名に決定する([]). 名称を早い者勝ちに登録者名に決定する([[_コード,_登録者]|R]) :- 採取リスト(_番号,_名称,_コード,_登録日,_登録者,_公開), 名称を早い者勝ちに登録者名に決定する(R). 名称を選択(_コード,_,_名称を登録者で置換したコードならび,_名称) :- member([_コード,_名称],_名称を登録者で置換したコードならび),!. 名称を選択(_コード,_名称,_,_名称) :- \+(member([_コード,_],_名称を登録者で置換したコードならび)). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1339338438/54 # # {1] 授業単元:プログラミング演習 # [2] 問題文: # http://ime.nu/codepad.org/Q5HCQPvq # 上記のプログラムを参考にしてa君、b君、c君の5教科(英語、数学、国語、理科、社会)の試験の得点をそれぞれ # a[5]={55,32,67,61,77};,b[5]={74,80,56,78,42};,c[5]={38,67,78,62,82}; と初期化する。 # 但し上記の3つの配列の要素番号0,1,2,3,4の得点は、それぞれ英語、数学、国語、理科、社会の得点に対応する。 # このとき、教科別の3人の平均点を求めるプログラムをポインタ配列を用いて作成せよ。 # # #include # # int main(void) # { # int a1[5] = {50, 80, 20, 30, 10}; # int b1[5] = {20, 40, 30, 20, 50}; # int *p[2]; # int i; # int ave; # # p[0] = a1; # p[1] = b1; # for (i=0; i<5; i++) # { # ave = (*(p[0]+i) + *(p[1]+i)) /2; # printf("%d = %d\n", i, ave); # } # return 0; # } 課題の文字列('a君、b君、c君の5教科(英語、数学、国語、理科、社会)の試験の得点をそれぞれ a[5]={55,32,67,61,77};,b[5]={74,80,56,78,42};,c[5]={38,67,78,62,82}; と初期化する。'). 'a君、b君、c君の5教科(英語、数学、国語、理科、社会)の試験の得点をそれぞれ a[5]={55,32,67,61,77};,b[5]={74,80,56,78,42};,c[5]={38,67,78,62,82}; と初期化する。' :- 課題の文字列(_文字列), split(_文字列,[';','[5]=','{','}'],L), 定義情報の選択(L,_君,_英語,_数学,_国語,_理科,_社会,R), 得点を定義する(_君,[英語,数学,国語,理科,社会],[_英語,_数学,_国語,_理科,_社会]), R = []. 定義情報の選択(L,_君,_英語,_数学,_国語,_理科,_社会,R) :- append(Ln,[_君,_英語,_数学,_国語,_理科,_社会|R],L), length(Ln,Len), 0 is Len mod 6. 得点を定義する(_,[],[]). 得点を定義する(_君,[_科目|R1],[_得点|R2]) :- assertz(得点(_君,_科目,_得点)), 得点を定義する(_君,R1,R2). 教科別の3人の平均点を求める(_科目,_相加平均) :- 教科別の3人の平均点を求める(_科目別相加平均ならび), member([_科目,_相加平均],_科目別相加平均ならび). 教科別の3人の平均点を求める(_科目別相加平均ならび) :- finsetof(_科目,( 得点(_,_科目,_)), _教科ならび), findall([_科目,_相加平均],( member(_科目,_教科ならび), findavg(_得点,( 得点(_,_科目,_得点)), _相加平均)), _科目別相加平均ならび). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1339338438/54 # # {1] 授業単元:プログラミング演習 # [2] 問題文: # http://ime.nu/codepad.org/Q5HCQPvq # 上記のプログラムを参考にしてa君、b君、c君の5教科(英語、数学、国語、理科、社会)の試験の得点をそれぞれ # a[5]={55,32,67,61,77};,b[5]={74,80,56,78,42};,c[5]={38,67,78,62,82}; と初期化する。 # 但し上記の3つの配列の要素番号0,1,2,3,4の得点は、それぞれ英語、数学、国語、理科、社会の得点に対応する。 # このとき、教科別の3人の平均点を求めるプログラムをポインタ配列を用いて作成せよ。 # 'a君、b君、c君の5教科(英語、数学、国語、理科、社会)の試験の得点をそれぞれ a[5]={55,32,67,61,77};,b[5]={74,80,56,78,42};,c[5]={38,67,78,62,82}; と初期化する。' :- 得点を定義する(a,[英語,数学,国語,理科,社会],[55,32,67,61,77]), 得点を定義する(b,[英語,数学,国語,理科,社会],[74,80,56,78,42]), 得点を定義する(c,[英語,数学,国語,理科,社会],[38,67,78,62,82]). 得点を定義する(_,[],[]). 得点を定義する(_君,[_科目|R1],[_得点|R2]) :- assertz(得点(_君,_科目,_得点)), 得点を定義する(_君,R1,R2). 教科別の3人の平均点を求める(_科目,_相加平均) :- 教科別の3人の平均点を求める(_科目別相加平均ならび), member([_科目,_相加平均],_科目別相加平均ならび). 教科別の3人の平均点を求める(_科目別相加平均ならび) :- finsetof(_科目,( 得点(_,_科目,_)), _教科ならび), findall([_科目,_相加平均],( member(_科目,_教科ならび), findavg(_得点,( 得点(_,_科目,_得点)), _相加平均)), _科目別相加平均ならび). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1323566370/896 # # すみません # Objective-CのNSRegularExpressionで、ある文字列について、 # ・順番通りに # ・一部が欠けてもよく # ・途中に余計な文字が入ってもよく # ・一致する数を数える # ようなパターンを組みたいのですが、 # 例えばABCDEという文字列があったとして # ABCDE→5(全件一致) # AABBCCDDEE→5(全件一致) # ADCBE→3(A,C,Eが一致) # AFGHBCDE→5(全件一致) # EDCBA→1(Eのみ一致) # というように数えたいのですが、上手くいきません。 # .*?(A)?.*?(B)?.*?(C)?.*?(D)?.*?(E)?.*? # ではダメみたいなのですがどうするのが正しいでしょうか # # '・順番通りに ・一部が欠けてもよく ・途中に余計な文字が入ってもよく ・一致する数を数えるようなパターンを評価する'(_文字列,_パターン,_評価) :- atom_chars(_文字列,Chars), 指定検索パターンの昇順要素のみ評価する('A',Chars,['A','B','C','D','E'],_重複可能なパターン), パターン評価(_重複可能なパターン,_パターン,_評価). 指定検索パターンの昇順要素のみ評価する(_,[],[]). 指定検索パターンの昇順要素のみ評価する(U,[A|R1],_検索文字ならび,[A|R2]) :- member(A,_検索文字ならび), U @=< A, 指定検索パターンの昇順要素のみ評価する(A,R1,_検索文字ならび,R2). 指定検索パターンの昇順要素のみ評価する(U,[A|R1],_検索文字ならび,R2) :- member(A,_検索文字ならび)), U @> A, 指定検索パターンの昇順要素のみ評価する(U,R1,_検索文字ならび,R2). 指定検索パターンの昇順要素のみ評価する(U,[A|R1],_検索文字ならび,R2) :- \+(member(A,_検索文字ならび)), 指定検索パターンの昇順要素のみ評価する(U,R1,_検索文字ならび,R2). パターン評価(_重複可能なパターン,_検索文字ならび,_パターン,_評価) :- 重複する文字を取り除く(_重複可能なパターン,_パターン), length(_パターン,_パターンの文字数), length(_検索文字ならび,_全件数), 評価(_パターンの文字数,_全件数,_評価). 重複する文字を取り除く(_重複可能なパターン,_パターン) :- setof(A,member(A,_重複可能なパターン),_パターン). 評価(_全件数,_全件数,全件一致). 評価(_パターンの文字数,_,_評価) :- atomic_list_concat([_パターンの文字数,件一致],_評価). % 以下のサイトは # We are given a graph with the following facts: # # edge(a,b) # edge(a,c) # edge(b,a) # edge(c,d) # edge(d,d) # edge(d,e) # edge(e,f) # edge(f,g) # edge(g,e) # And we are asked to define a rule, cycle(X), that determines if there is a cycle starting from the node X. # # I am really lost on how to do this, I tried attempting to traverse the nodes and checking if the next one would be the starting one again but I cannot seem to get it to work 端点(a,b) 端点(a,c) 端点(b,a) 端点(c,d) 端点(d,d) 端点(d,e) 端点(e,f) 端点(f,g) 端点(g,e) サイクル(X) :- setof(_出発点,[_出発点,_到着点] ^ 端点(_出発点,_到着点),_出発点集合), member(_出発点,_出発点集合), 到着点が出発点として既に現れている端点を探す(_出発点,[],X). 到着点が出発点として既に現れている端点を探す(_出発点,L,X) :- 端点(_出発点,X), member(X,L),!. 到着点が出発点として既に現れている端点を探す(_出発点,L1,X) :- 端点(_出発点,_到着点), 到着点が出発点として既に現れている端点を探す(_到着点,[_出発点|L1],X). % 以下のサイトは # So I have a set of facts: # # course(cs61, "intro to cs") # ... # course(cs62b, "data structure") # ... # grade(adam, cs61, spring11, "A") # ... # grade(chrisitian, cs61, fall2010, "A-") I need to define a predicate good_standing(Student) to determine whether the Student got A in every class he took. I must use 2 different approaches: # # use setof/3 # use NAF # on the 1st. I have tried to figure out get Result_list: the set of students that got A from every class he took. and then call member(Student, Result_list). But I don't know what to get the Result_list since the syntax is a bit strange to me. '科目の全てを受講し、かつ成績がAの者'(_氏名) :- setof(_氏名,[_氏名,_科目,_コース,_成績] ^ ( 成績(_氏名,_科目,_コース,_成績)),_氏名ならび), setof(_科目,[_科目,_科目内容] ^ 科目(_科目,_科目内容)),_科目ならび), member(_氏名,_氏名ならび), 受講した科目と成績(_氏名,_受講した科目ならび,_成績ならび), \+(受講していない科目がある(_受講した科目ならび)), all(_成績ならび,'A'). 受講した科目と成績(_氏名,_受講した科目ならび,_成績ならび) :- findall(_科目,( 成績(_氏名,_科目,_コース,_成績)),_受講した科目ならび), findall(_成績,( 成績(_氏名,_科目,_成績)),_成績ならび). 受講していない科目がある(_受講した科目ならび,_科目ならび) :- member(_科目,_科目ならび), \+(member(_科目,_受講した科目ならび)). all([],_). all([V|R],V) :- all(R,V). % 以下のサイトは # I have a database looks like; # # airport(ist, 90). # airport(saw, 45). # airport(esb, 60). # airport(adb, 60). # airport(erz, 30). # airport(ayt, 90). # airport(mlx, 30). # airport(tzx, 30). # # airplane(f1, ist, [esb,tzx,saw]). # airplane(f2, ist, [mlx,esb,erz,esb]). # airplane(f3, ist, [esb,ist,esb,ist]). # airplane(f4, saw, [ayt,saw,ayt,saw]). # airplane(f5, erz, [esb,erz,esb]). # airplane(f6, mlx, [ist,esb,tzx,saw]). # and I have a predicate called "testing" takes two lists as parameter. So, if you write testing([ist],X). you should get X=[esb,mlx]. I wrote this code. # # testing([],[]). # # testing([D|D1],[L|L1]) :- # airport(D,_), # airplane(_,D,[L|_]), # testing(D1,L1). # This works and the output is: # # [8] 60 ?- listConnections([ist],X). # X = [esb] ; # X = [mlx] ; # X = [esb]. # But this is not that I want. So the first problem is I need a single line answer like X=[esb,mlx]. The second problem is there shouldn't duplicate elements in the list. I hope my problem is clear. Any help would be greatly appreciated # airport(ist, 90). airport(saw, 45). airport(esb, 60). airport(adb, 60). airport(erz, 30). airport(ayt, 90). airport(mlx, 30). airport(tzx, 30). airplane(f1, ist, [esb,tzx,saw]). airplane(f2, ist, [mlx,esb,erz,esb]). airplane(f3, ist, [esb,ist,esb,ist]). airplane(f4, saw, [ayt,saw,ayt,saw]). airplane(f5, erz, [esb,erz,esb]). airplane(f6, mlx, [ist,esb,tzx,saw]). testing([],[]). testing([_airport|R1],[L|R2]) :- findsetof(_airport_1,( airport(_airport,_), airplane(_,_airport,[_airport_1|_])), L), testing(R1,R2). findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/662 # # MySQL5 # # 開始日、終了日を持ったテーブルを日付単位に表示したいです。 # tbl_job は、以下の構造です。 # # id, name, start_date, end_date # --------------------------- # 1, JOB1, 2012-04-01, 2012-04-03 # 2, JOB2, 2012-04-02, 2012-04-04 # # 上記テーブルから以下のように日付単位でJOBを表示するSQLを教えてほしいです。 # # date, id, name # -------------------- # 2012-04-01, 1, JOB1 # 2012-04-02, 1, JOB1 # 2012-04-02, 2, JOB2 # 2012-04-03, 1, JOB1 # 2012-04-03, 2, JOB2 # 2012-04-04, 2, JOB2 # # '開始日、終了日を持ったテーブルを日付単位に表示したい' :- 日付単位tbl_jobの生成(_日付単位tbl_jobならび), findsetof(_日付,( member([_date,_,_],_日付単位tbl_jobならび)), _日付ならび), 日付単位に表示する(_日付ならび,_日付単位tbl_jobならび). 日付単位tbl_jobの生成(_日付単位tbl_jobならび) :- findall(_日付,( tbl_job(_id,_name,_start_date,_end_date), 日付の生成(_start_date,_end_date,_日付)), _日付単位tbl_jobならび). 日付の生成(_終了年-_終了月-_終了日,_終了年-_終了月-_終了日,_終了年-_終了月-_終了日) :- !. 日付の生成(_開始年-_開始月-_開始日,_終了年-_終了月-_終了日,_開始年-_開始月-_開始日). 日付の生成(_開始年-_開始月-_開始日,_終了年-_終了月-_終了日,_年-_月-_日) :- 翌日(_開始年,_開始月,_開始日,_翌日年,_翌日月,_翌日日), 日付の生成(_翌日年-_翌日月-_翌日日,_終了年-_終了月-_終了日,_年-_月-_日). 翌日(_年,12,31,_翌年,1,1) :- !. 翌日(_年,_月,30,_年,_翌月,1) :- member(_月,[4,6,9,11]), _翌月 is _月 + 1,!. 翌日(_年,_月,31,_年,_翌月,1) :- _翌月 is _月 + 1,!. 翌日(_年,2,29,_年,3,1) :- !. 翌日(_年,2,28,_年,3,1) :- \+(うるう年(_年)), 翌日(_年,_月,_日,_年,_月,_翌日) :- _翌日 is _日 + 1. うるう年(_年) :- 0 is _年 mod 400,!. うるう年(_年) :- 0 is _年 mod 100,!, fail. うるう年(_年) :- 0 is _年 mod 4,!. うるう年(_年) :- \+(0 is _年 mod 4), fail. 日付単位に表示する(_日付ならび,_日付単位tbl_jobならび) :- member(_日付,_日付ならび), member([_日付,_id,_name],_日付単位tbl_jobならび), 日付の形式を整えながら一行表示する(_日付,_id,_name), fail. 日付単位に表示する(_日付ならび,_日付単位tbl_jobならび). 日付の形式を整えながら一行表示する(_年-_月-_日,_id,_name) :- swritef(S,'%2r-%2r-%2r',[_年-_月-_日]), 空白を0に置換した日付文字列(S,_空白を0に置換した日付文字列), writef('%t, %t, %t\n',[_空白を0に置換した日付文字列,_id,_name). 空白を0に置換した日付文字列(S,_空白を0に置換した日付文字列) :- findall(_文字_2,( sub_atom(S,_,1,_,_文字), 空白を0に置換(_文字,_文字_2)), _空白を0に置換した日付文字列). 空白を0に置換(' ','0') :- !. 空白を0に置換(A,A). % 以下のサイトは # 出典 :: SQL質疑応答スレ 12問目 #649 # SQLというよりテーブル設計の質問なんですがいいでしょうか? # # ユーザごとの日々変化するデータを1日1レコードずつ保存するために # 以下のようなテーブル構造を考えました。 # # USERSテーブル #  user_no (ユーザ番号 PK) #  latest_gen_no (最新世代番号) #  氏名その他の属性 # # RECORDSテーブル #  user_no (ユーザ番号 PK*) #  gen_no (世代番号 PK*) #  日々変化する値 # *user_no, gen_no のペアでPK # # GENERATIONSテーブル #  gen_no (世代番号 PK) #  date (日時) # # 全ユーザの最新世代の値を取得するべく、 # select ... from users u, records r # where u.user_no=r.user_no and u.latest_gen_no=r.gen_no; # というSQLを発行すると、ものすごく時間が掛かります。 # # PKやインデックスの設定の仕方に問題があるのでしょうか? # そもそもテーブルの構成がまずいでしょうか? # テーブル副目標(_テーブル名,_引数ならび,_属性名ならび,_副目標) :- findall(_,テーブル定義(_テーブル名,_,_属性名),_引数ならび), 属性名ならびを得る(_テーブル名,_属性名ならび), _副目標 =.. [_テーブル名|_引数ならび]. 属性名ならびを得る(_テーブル名,_属性名ならび) :- setof([_属性順位,_属性名],[_テーブル名,_属性順位,_属性名] ^ テーブル定義(_テーブル名,_属性順位,_属性名),_属性順位_属性名ならび), findall(_属性名,member([_,_属性名],_属性順位_属性名ならび),_属性名ならび). 'USERSテーブルを最新世代に更新する' :- ユーザごとの現在の最新世代を得る(_ユーザごとの最新世代ならび), 'USERSテーブルを更新する'(_ユーザごとの最新世代ならび). ユーザごとの現在の最新世代を得る(_ユーザごとの最新世代ならび) :- 'テーブル副目標'('USERS',[_ユーザ番号,_最新世代番号|_氏名その他の属性],_,_USERS), findsetof(_ユーザ番号,_USERS,_対象ユーザ番号ならび), ユーザごとの現在の最新世代を得る(_対象ユーザ番号ならび,_ユーザごとの最新世代ならび). ユーザごとの現在の最新世代を得る([],[]). ユーザごとの現在の最新世代を得る([_ユーザ番号|R1],[[_ユーザ番号,_最新世代番号]|R2]) :- テーブル副目標('RECORDS',[_ユーザ番号,_世代番号|_],_,_RECORDS), findmax([_日時,_世代番号],( 'USERSテーブルの日時、世代番号'(_RECODRS,_世代番号,_日時)),[_,_最新世代番号]), ユーザごとの現在の最新世代を得る(R1,R2). 'USERSテーブルの日時、世代番号'(_RECODRS,_世代番号,_日時) :- _RECORDS, 'GENERATIONS'(_世代番号,_日時). 'USERSテーブルを更新する'([]). 'USERSテーブルを更新する'([[_ユーザ番号,_最新世代番号]|R]) :- 'テーブル副目標の最新世代番号情報を更新する'(_ユーザ番号,_最新世代番号), 'USERSテーブルを更新する'(R),!. 'テーブル副目標の最新世代番号情報を更新する'(_ユーザ番号,_最新世代番号) :- テーブル副目標('USERS',[_ユーザ番号,_|_氏名その他の属性],_,_USERS_1), テーブル副目標('USERS',[_ユーザ番号,_最新世代番号|_氏名その他の属性],_,_USERS_2), 'USERSテーブルの更新'(_USERS_1,_USERS_2). 'USERSテーブルの更新'(_USERS_1,_USERS_2) :- retract(_USERS_1), assertz(_USERS_2). % 以下のサイトは # # 売上('20120416',トマト,3000). # 売上('20120417',ナス,1000). # 売上('20120416',トマト,1500). # 売上('20120417',ナス,2200). # # の時に、日付ごとの合計売上が欲しい。 # # ?- 集約加算(_集約値,[_日付,_集約値],[_日付],[_金額],売上(_日付,_品目,_金額),_解). # # _解 = [['20120416',4500],['20120417',3200]] # 集約加算(_集約解変数指定,_選択項,_鍵項,_集約項,P,_解) :- findsetof(_鍵項,P,L1), findkeysort(_選択項,_鍵項,( member(_鍵項,L1), findsum(_集約項,P,_集約解変数指定)), _解_1), 集約加算の解を平坦化する(_解_1,_解). 集約加算の解を平坦化する(_解_1,_解) :- findall(L3,( member(L2,_解_1), 平坦化(L2,L3)), _解) . %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L). findkeysort(Select,Keys,P,List) :- append(Keys,Select,Keys2), findall(Keys2,P,List1), sort(List1,List2), findall(Select,member(Keys2,List2),List). 平坦化(_深いならび,_平坦化されたならび) :- 差分ならびによる平坦化(_深いならび,_平坦化されたならび - []) . 差分ならびによる平坦化([_項|_残りならび],_差分ならび頭部 - _差分ならび尾部) :- 差分ならびによる平坦化(_項,_差分ならび頭部 - _不完全な差分ならび), 差分ならびによる平坦化(_残りならび,_不完全な差分ならび - _差分ならび尾部) . 差分ならびによる平坦化([],_差分ならび頭部 - _差分ならび尾部) :- _差分ならび頭部 = _差分ならび尾部 . 差分ならびによる平坦化(_項,[_項|_差分ならび尾部] - _差分ならび尾部) :- \+(list(_項)),!. % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/647 # # #インデントが崩れる場合は http://ime.nu/pastebin.com/26BkXDHs をみてください。 # # -- # -- 商品テーブルと、 # -- # create table items ( # id serial primary key, # name varchar(255) not null, # price integer not null -- 単価 # ); # # -- # -- 販売テーブルがあるとする。 # -- # create table sales ( # id serial primary key, # item_id integer not null references items(id), # count integer not null default 1, -- 個数 # total integer not null, -- 単価 * 個数 # created_at timestamp not null default current_datetime # ) # # -- # -- 日付を指定して、その日の商品別販売金額合計を大きい順に表示したい。 # -- どういうSQLを書けばいいの? # -- こんなかんじで書けたらいいんだけど。 # -- # select items.id, items.name # from items, # (select item_id, sum(total) as sum_total # from sales # where date(created_at) = '2012-04-01' # group by item_id) as totals # where items.id = totals.item_id # order by totals.sum_total desc; # # '日付を指定して、その日の商品別販売金額合計を大きい順に表示したい' :- '日付を指定して、'(_日付), その日の商品別販売金額合計を(_日付,L1), 大きい順に表示する(L1). '日付を指定して、'(_日付) :- write('日付を8桁の整数で入力して下さい : '), get_line(Line), '日付を指定して、の診断'(Line,_日付),!. '日付を指定して、'(_日付) :- '日付を指定して、'(_日付). '日付を指定して、の診断'(Line,_日付) :- atom_to_term(Line,_8桁の整数,_), '8桁の整数'(_8桁の整数), '8桁の整数から日付を得る'(_8桁の整数,_日付),!. '日付を指定して、の診断'(Line,_日付) :- writef('入力された %t からは日付が得られませんでした。再入力をお願いします\n',[Line]), fail. '8桁の整数'(_8桁の整数) :- integer(_8桁の整数), _8桁の整数 >= 10000000, _8桁の整数 =< 99999999. '8桁の整数から日付を得る'(_8桁の整数,_日付) :- swritef(_日付文字列,'%t',[_8桁の整数]), sub_atom(_日付文字列,0,4,_,_年), sub_atom(_日付文字列,4,2,_,_月), sub_atom(_日付文字列,6,2,_,_日), atomic_list_concat([_年,'-',_月,'-',_日],_日付),!. その日の商品別販売金額合計を(_日付,L1) :- findsetof(_id,( sales(_id,_item_id,_count,_total,_日付)), L), findall([_total,_id],( append(_,[_id|R],L), 商品の販売合計(_日付,_id,_合計金額)), L1). 商品の販売合計(_日付,_id,_合計金額) :- findsum(_total,( sales(_id,_item_id,_count,_total,_日付)), _合計金額). 大きい順に表示する(L1) :- 大きい順に(L1,L2), 表示する(L2). 大きい順に(L1,L2) :- sort(L1,L3), reverse(L3,L2). 表示する(_日付,[]). 表示する(_日付,[[_合計金額,_id]|R]) :- items(_id,_name,_price), writef('%t %t %20l %10r\n',[_日付,_id,_name,_合計金額]), 表示する(_日付,R). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/633 # # MySQL 5.1です。 # # create table staff_list( # staff_id int(5) primary key //社員番号 # staff_name varchar(8) //社員名 # unit varchar(8) primary key //部署名 # ) # # insert into staff_list (staff_id,staff_name,unit) values # (1,'範馬','総務'), # (2,'愚地','総務'), # (3,'花山','総務'), # (1,'高津','企画'), # (2,'池谷','企画'), # (3,'長嶋','企画'), # (1,'鳩山','営業'), # (2,'野田','営業'), # (3,'小沢','営業'), # (4,'枝野','営業') # # # # このようなテーブルに対してSELECTをかける際、一度のクエリーで # 部署別にソートしたうえで、総務だけstaff_id降順で他を昇順で出したいと思っています。 # # order by unit,IF(staff_name='総務',staff_id desc,staff_id asc) # などと試行してみているのですがうまくできません。 # # どなたかうまい方法をご存じないでしょうか。 # # よろしくお願いいたします。 # スタッフリスト(1,範馬,総務). スタッフリスト(2,愚地,総務). スタッフリスト(3,花山,総務). スタッフリスト(1,高津,企画). スタッフリスト(2,池谷,企画). スタッフリスト(3,長嶋,企画). スタッフリスト(1,鳩山,営業). スタッフリスト(2,野田,営業). スタッフリスト(3,小沢,営業). スタッフリスト(4,枝野,営業). 'このようなテーブルを選択する際、一度部署別にソートしたうえで、総務だけ社員番号降順で出したいと思っています。'(_部署名,_社員番号,_社員名) :- 一度部署別にソートしたうえで(_部署名ならび), 総務だけ社員番号降順で出したい(_部署名ならび,_部署名,_社員番号,_社員名). 一度部署別にソートしたうえで(_部署名ならび) :- findsetof(_部署名,( スタッフリスト(_社員番号,_社員名,_部署名)), _部署名ならび). 総務だけ社員番号降順で出したい(_部署名ならび,_部署名,_社員番号,_社員名) :- member(_部署名,_部署名ならび), 総務だけ社員番号降順で出したい(_部署名,_社員番号,_社員名). 総務だけ社員番号降順で出したい(総務,_社員番号,_社員名) :- 総務だけ社員番号降順で(_社員番号,_社員名). 総務だけ社員番号降順で出したい(_部署名,_社員番号,_社員名) :- \+(_部署名 == 総務), スタッフリスト(_社員番号,_社員名,_部署名). 総務だけ社員番号降順で(_社員番号,_社員名) :- findall([_社員番号,_社員名],( スタッフリスト(_社員番号,_社員名,総務)), L1), 降順でソート(L1,L2), member([社員番号,_社員名],L2). 降順でソート(L1,L2) :- sort(L1,L3), reverse(L3,L2). % % findsetof/3 % % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/621 # # ■DBMS名とバージョン # MySQL 5.0 # # ■テーブルデータ # 店舗テーブル # AreaID      int(1)←この2つでキーになってます # TenpoID     int(1)←この2つでキーになってます # uriage       int(16) # # 社員テーブル # SyainNo      int(255) # AreaID       int(1) # TenpoID      int(1) # SyainName    varchar(256) # # ■欲しい結果 # # uriageが5000以下の店舗に属してる社員を抜き出す # のと # その社員をいっぺんに消す # # どのようにSQL文を書けばいいでしょうか? # % % この問題のように、findall/3を使って、単位節データベースから読み取る場合は % 単純にappend/3を使って解を組み上げていくのがよい。 % 'uriageが5000以下の店舗に属してる社員を抜き出す'(_uriageが5000以下の店舗に属してる社員Noと社員名ならび) :- 'uriageが5000以下の店舗'(_uriageが5000以下の店舗ならび), 'uriageが5000以下の店舗に属してる社員を抜き出す'(_uriageが5000以下の店舗,_uriageが5000以下の店舗に属してる社員Noと社員名ならび). 'uriageが5000以下の店舗に属してる社員を抜き出す'([],[]). 'uriageが5000以下の店舗に属してる社員を抜き出す'([[_AreaID,_TempoID]|R1],_uriageが5000以下の店舗に属してる社員Noと社員名ならび) :- 店舗に属してる社員(_AreaID,_TempoID,_店舗に属してる社員Noと社員名ならび), 'uriageが5000以下の店舗に属してる社員を抜き出す'(R1,_uriageが5000以下の店舗に属してる社員Noと社員名ならび_1), append(_店舗に属してる社員Noと社員名ならび,_uriageが5000以下の店舗に属してる社員Noと社員名ならび_1,_uriageが5000以下の店舗に属してる社員Noと社員名ならび). 'uriageが5000以下の店舗'(_uriageが5000以下の店舗ならび) :- findsetof([_AreaID,_TempoID],( 店舗(_AreaID,_TempoID,_uriage), _uriage =< 5000), _uriageが5000以下の店舗ならび). 店舗に属してる社員(_AreaID,_TempID,_店舗に属してる社員Noと社員名ならび) :- findall([_SyainNo,_SyainName],( 社員(_SyainNo,_AreaID,_TempoID,_SyainName)), _店舗に属してる社員Noと社員名ならび). 'uriageが5000以下の店舗に属してる社員を抜き出した上、その社員をいっぺんに消す' :- 'uriageが5000以下の店舗に属してる社員を抜き出す'(_uriageが5000以下の店舗に属してる社員Noと社員名ならび), append(_,[[_SyainNo,_SyainName]|R],_uriageが5000以下の店舗に属してる社員Noと社員名ならび), retract(社員(_SyainNo,_AreaID,_TempoID,_SyainName)), R = []. % findsetof/3 % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/614 # # ・DBMS名とバージョン # MySQL # # ・テーブルデータ # 店舗(店舗ID 店舗名) # # 商品(商品ID 店舗ID 商品名) # (※同じ名前の商品が複数の店舗にあっても、別の商品として扱う) # # 売り上げ(売り上げID 商品ID 個数) # # ・欲しい結果 # 店舗名 商品名 売り上げ個数合計 # (※店舗名、商品名でソート) # # ・説明 # SELECT * FROM `店舗` ORDER BY `店舗名`; # この結果をプログラム側でループ # SELECT * FROM 商品 WHERE 店舗ID=? ORDER BY `商品名`; # さらにこの結果をループ # SELECT SUM(個数) FROM 売り上げ WHERE 商品ID=? # # これだと時間がかかりすぎるので、これを1つ、または2つのSQLにまとめたいです。 # # # SELECT *, SUM(`売り上げ`.個数`) AS `売り上げ個数合計` # FROM `商品` # LEFT JOIN `売り上げ` ON `商品`.`商品ID` = `売り上げ`.`商品ID` # WHERE `商品`.`店舗ID`=? # # とりあえず下2つだけでもまとめようとしてみたのですが、合計が商品毎ではなく店舗毎の合計になってしまいます。 # # # '店舗名・商品名を鍵として売り上げ個数合計を集約する'(_店舗名,_商品名,_売り上げ個数合計) :- '店舗名・商品名を鍵ならびとする'(LL1), '店舗名・消費名を鍵に売り上げ個数合計を集約する'(LL1,LL2), member([_店舗名,_商品名,_売り上げ個数合計],LL2). '店舗名・商品名を鍵ならびとする'(LL1) :- setof([_店舗名,_商品名],[_店舗ID,_店舗名,_商品ID,_商品名] ^ ( '店舗・商品から_店舗名,_商品名の対を得る'(_店舗ID,_店舗名)),LL1). '店舗・商品から_店舗名,_商品名の対を得る'(_店舗名,_商品名) :- 店舗(_店舗ID,_店舗名), 商品(_商品ID,_店舗ID,_商品名). '店舗名・消費名を鍵に売り上げ個数合計を集約する'(LL1,LL2) :- findall([_店舗名,_商品名,_売り上げ個数合計],( member([_店舗名,_商品名],LL1), 度数('店舗名・商品名を鍵に売り上げ'(_店舗名,_商品名),_売り上げ個数合計)),LL2). '店舗名・商品名を鍵に売り上げ'(_店舗名,_商品名) :- 店舗(_店舗ID,_店舗名), 商品(_商品ID,_店舗ID,_商品名). 度数(_目標,_度数) :- findall(1,_目標,L), length(L,_度数). % 以下のサイトは ?- 'a##'. # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/584 # # MySQL 5.5.19 . 長くなりますので # テーブルの定義・内容と欲しい結果はここに # http://ime.nu/codepad.org/oe1jhVrF # # で、 # # create table a_tbl( # code int(9) not null, # input_date date not null, # data1 double(9,2) unsigned default 0 not null, # data2 double(9,2) unsigned default 0 not null, # primary key(code,input_date) # ) ; # # insert into a_tbl # values # (1111,'2012-02-01',10,12), # (1111,'2012-02-02',133,14), # (1111,'2012-02-04',13,15), # (1111,'2012-02-06',13,10); # # create table b_tbl( # code varchar(10) not null, # input_date date not null, # data1 double(9,2) unsigned default 0 not null, # data2 double(9,2) unsigned default 0 not null, # primary key(code,input_date) # ) ; # # insert into b_tbl # values # ('ddd','2012-02-01',122,13), # ('ddd','2012-02-03',127,18), # ('ddd','2012-02-04',11,14), # ('ddd','2012-02-05',16,95), # ('ddd','2012-02-06',13,10); # # 欲しい結果 # input_date a.data1 a.data2 b.data2 # 2012-02-01 10 12 13 # 2012-02-02 133 14 null # 2012-02-03 null null 18 # 2012-02-04 13 15 14 # 2012-02-05 null null 95 # 2012-02-06 13 10 10 # # # select a.input_date,b.input_date,a.data1,a.data2,b.data2 # from a_tbl a # right join b_tbl b # on a.input_date = b.input_date; とすると、結果が # +------------+------------+-------+-------+-------+ # | input_date | input_date | data1 | data2 | data2 | # +------------+------------+-------+-------+-------+ # | 2012-02-01 | 2012-02-01 | 10 | 12 | 13 | # | NULL | 2012-02-03 | NULL | NULL | 18 | # | 2012-02-04 | 2012-02-04 | 13 | 15 | 14 | # | NULL | 2012-02-05 | NULL | NULL | 95 | # | 2012-02-06 | 2012-02-06 | 13 | 10 | 10 | # +------------+------------+-------+-------+-------+ # なんですが、実際にはいろんなコードが入っているので、コードも抽出条件に入れたら # select a.input_date,b.input_date,a.data1,a.data2,b.data2 # from a_tbl a # right join b_tbl b # on a.input_date = b.input_date # where # a.code=1111 and b.code='ddd'; # +------------+------------+-------+-------+-------+ # | input_date | input_date | data1 | data2 | data2 | # +------------+------------+-------+-------+-------+ # | 2012-02-01 | 2012-02-01 | 10 | 12 | 13 | # | 2012-02-04 | 2012-02-04 | 13 | 15 | 14 | # | 2012-02-06 | 2012-02-06 | 13 | 10 | 10 | # +------------+------------+-------+-------+-------+ # になってしまいました。 # コードを抽出条件に入れた状態で望ましい結果または上の方の結果になるようなSQLを教えて下さい。 # 'input_dateの集合を得る'(_input_dateの集合) :- findall(_input_date,a_tbl(_input_date,_,_),L1), findall(_input_date,b_tbl(_input_date,_,_),L2), append(L1,L2,L3), setof(_input_date,member(_input_date,L3),_input_dateの集合). 抽出(_input_date,_tbl_aのdata1ならび,_tbl_aのdata2ならび,_tbl_bのdata2ならび) :- 'input_dateの集合を得る'(_input_dateの集合), member(_input_date,_input_dateの集合), findall([_data1],tbl_a(_,_input_date,_data1,_),_tbl_aのdata1ならび), findall([_data2],tbl_a(_,_input_date,_,_data2),_tbl_aのdata2ならび), findall([_data2],tbl_b(_,_input_date,_,_data2),_tbl_bのdata2ならび). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/569 # # code | val # ------------ # A | 11 # A | 23 # A | 34 # A | 42 # B | 321 # B | 112 # B | 23 # B | 245 # というようなテーブルがあり、ここから # 同じcodeを持つ行が4行以上ある場合、val順で小さい方から3行残してのこりを削除 # したいのですが、SQL一発でできますか?DBMSはMySQLです。 # # ↓ほしい結果 # code | val # ------------ # A | 11 # A | 23 # A | 34 # B | 112 # B | 23 # B | 245 # # '同じcodeを持つ行が4行以上ある場合、val順で小さい方から3行残してのこりを削除したい' :- findsetof(_code,( table(_code,_)), _code候補ならび), append(_,[_code|R],_code候補ならび), 'code毎にvalの小さい順4位以下の組を'(_code,_4位以下の組ならび), '削除する'(_4位以下の組ならび), R = []. 'code毎にvalの小さい順4位以下の組を'(_code,_4位以下の組ならび) :- findall([_val,_code],( table(_code,_val)), L1), sort(L1,L2), 'valの小さい順4位以下の組'(L2,_4位以下の組ならび). 'valの小さい順4位以下の組'([_,_,_|R],R) :- !. 'valの小さい順4位以下の組'(_,[]). 削除する([]). 削除する([[A,B]|R]) :- retract(table(B,A)), 削除する(R). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/569 # # code | val # ------------ # A | 11 # A | 23 # A | 34 # A | 42 # B | 321 # B | 112 # B | 23 # B | 245 # というようなテーブルがあり、ここから # 同じcodeを持つ行が4行以上ある場合、val順で小さい方から3行残してのこりを削除 # したいのですが、SQL一発でできますか?DBMSはMySQLです。 # # ↓ほしい結果 # code | val # ------------ # A | 11 # A | 23 # A | 34 # B | 112 # B | 23 # B | 245 # # '同じcodeを持つ行が4行以上ある場合、val順で小さい方から3行残してのこりを削除したい' :- findsetof(_code,( table(_code,_)), _code候補ならび), append(_,[_code|R],_code候補ならび), 'code毎にvalの小さい順最大3件'(_code,L), '最大3件を書き戻す'(L), R = []. 'code毎にvalの小さい順最大3件'(_code,L) :- findall([_val,_code],( retract(table(_code,_val))), L1), sort(L1,L2), 'valの小さい順最大3件'(L1,L). 'valの小さい順最大3件'([],[]). 'valの小さい順最大3件'([[A1,B1],[A2,B2],[A3,B3]|_],[[B1,A1],[B2,A2],[B3,A3]]) :- !. 'valの小さい順最大3件'([[A,B]|R1],[[B,A]|R2]) :- 'valの小さい順最大3件'(R1,R2). '最大3件を書き戻す'([]). '最大3件を書き戻す'([[A,B]|R]) :- assertz(table(A,B)), '最大3件を書き戻す'(R). % 以下のサイトは # # データセット # date # 2001-10-19 # 2001-10-19 # 2003-12-7 # 2004-9-7 # .... # # といったidと日付の集まりがあります。日付は重複しています。 # ここから,SELECT count(date) FROM table GROUP BY dateで日付ごとの集計が # とれたのですが、さらにmaxを使って集計が最大の日の日付とカウント数を # 出したいのですがうまくいきません。 # 上の例では、2001-10-19,2というのを取りたいのですが、どうやったらいいんでしょうか? '集計が最大の日の日付とカウント数'(_日付,_度数) :- findsetof(_日付,( データセット(_日付)), _日付ならび), member(_日付,_日付ならび), count(データセット(_日付),_度数). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1325685876/516 # # [1] 授業単元:キーボード入力 # [2] 問題文(含コード&リンク): # 打ち込む文章を表示して,それをユーザがそっくりに打ち込ませ # その正確さを判定するプログラムを作成せよ. # '打ち込む文章を表示して,それをユーザにそっくりに打ち込ませその正確さを判定する' :- 打ち込む文章を表示して(_打ち込む文章ファイル,_打ち込む文章), それをユーザにそっくりに打ち込ませ(_ユーザの打ち込んだ文章), その正確さを判定する(_打ち込む文章,_ユーザの打ち込んだ文章,_減点数,_正確さの判定), 判定を表示する(_減点数,_正確さの判定). 打ち込む文章を表示して(_打ち込む文章ファイル,_打ち込む文章) :- get_lines(_打ち込む文章ファイル,Lines), append(_,[_打ち込む文章|_],Lines), writef('%t\n',[_打ち込む文章]). それをユーザにそっくりに打ち込ませ(_ユーザの打ち込んだ文章) :- get_line(_ユーザの打ち込んだ文章). その正確さを判定する(_打ち込む文章,_ユーザの打ち込んだ文章,_減点数,_正確さの判定). atom_chars(_打ち込む文章,_打ち込む文章の文字ならび), atom_chars(_ユーザの打ち込んだ文章,_ユーザの打ち込んだ文章の文字ならび), 語彙判定(_打ち込む文章,_ユーザの打ち込んだ文章,_同一語彙数判定), 誤字脱字等判定(_打ち込む文章の文字ならび,_ユーザの打ち込んだ文章の文字ならび,_誤字脱字度数判定), 総合判定(_同一語彙数判定,_誤字脱字度数判定,_減点数,_正確さの判定). 同一語彙数判定(_打ち込む文章,_ユーザの打ち込んだ文章,_同一語彙数判定) :- 形態素解析(_打ち込む文章,_形態素解析_1), 形態素解析(_ユーザの打ち込んだ文章,_形態素解析_2), 語彙の出現数の差異(_形態素解析_1,_形態素解析_2,_語彙の出現数差異度数), _同一語彙数判定 is (-1) * 2 * _語彙の出現数差異度数. 語彙の出現数の差異(_形態素解析_1,_形態素解析_2,_語彙の出現数の差異度数) :- setof(_形態素,member(_形態素,_形態素解析_1),_整列した形態素), findall(_出現数差異,( member(_形態素,_整列した形態素), count(member(_形態素,_形態素解析_1),_度数_1), count(member(_形態素,_形態素解析_2),_度数_2), _出現数差異 is abs(_度数_1 - _度数_2)), _語彙の出現数の差異ならび), sum(_語彙の出現数の差異ならび,_語彙の出現数の差異度数). 誤字脱字等判定(_打ち込む文章の文字ならび,_ユーザの打ち込んだ文章の文字ならび,_誤字脱字度数判定) :- 誤字脱字度数(_打ち込む文章の文字ならび,_ユーザの打ち込んだ文章の文字ならび,_誤字脱字数ならび), findall(_文字数,( member([_,_文字数],_誤字脱字数ならび)), _誤字脱字文字数ならび), sum(_誤字脱字文字数ならび,_誤字脱字度数), _誤字脱字数判定 is (-1) * _誤字脱字度数. 誤字脱字度数([],[],[]). 誤字脱字度数([A,B|R1],[B|R2],[[脱字,1]|R3]) :- \+(A == B), 誤字脱字度数(R1,R2,R3). 誤字脱字度数([B|R1],[A,B|R2],[[誤字挿入,1]|R3]) :- \+(A == B), 誤字脱字度数(R1,R2,R3). 誤字脱字度数([A,B|R1],[C,B|R2],[[誤字,1]|R3]) :- \+(A == C), 誤字脱字度数(R1,R2,R3). 誤字脱字度数([A|R1],[A|R2],R3) :- 誤字脱字度数(R1,R2,R3). 総合判定(_同一語彙数判定,_誤字脱字度数判定,_減点数,_正確さの判定) :- _減点数 is _同一語彙数判定 + _誤字脱字度数判定, 分類判定(_減点数,_正確さの判定). 分類判定(0,'1級'). 分類判定(_減点数,'2級') :- _減点数 < 0, _減点数 >= (-3). 分類判定(_減点数,'3級') :- _減点数 < (-3), _減点数 >= (-7). 分類判定(_減点数,'4級') :- _減点数 < (-7), _減点数 >= (-12). 分類判定(_減点数,'5級') :- _減点数 < (-12). 判定を表示する(_減点数,_正確さの判定) :- writef('入力された文章の正確さ判定は誤り減点数 %t で %t です。\n',[_減点数,_正確さの判定]). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/tech/1325685876/26 # # 問題:4桁の数字が与えられたとき、その4個の数字で組み合わせって、作れる? # 1001 ならば 0011,0101,0110,1001,1010,1100 が出来るなど。 # 言語・コンパイラ:C gcc # '4桁の数字が与えられたとき、その4個の数字の組み合わせ'(_4桁の数字,_4個の数字の組み合わせ) :- atom_chars(_4桁の数字,Chars), setof(X,順列(Chars,4,X),_4個の数字の組合せ). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/411 # # 質問です。DBはSQLite3です。 # 構成が同じなので../test/read.cgi/db/1316769778/244のテーブルを説明に使わせてもらいます # # shop # id name # 1 Aカンパニー # 2 Bカンパニー # 3 Cカンパニー # # area # 1 北海道 # 2 青森 # 3 岩手 # 4 秋田 # # shop_area # shop_id area_id # 1 1 # 1 2 # 1 3 # 2 2 # 2 4 # 3 2 # 3 3 # # # 北海道なら、Bカンパニー・Cカンパニー # 青森なら、無し # 岩手なら、Bカンパニー # 秋田なら、Aカンパニー・Cカンパニー # 北海道・秋田なら、Cカンパニー # # 除外検索の要領で、対象の支社が無い会社を呼び出したい時はどうすればよいのでしょうか # '除外検索の要領で、対象の支社が無い会社を呼び出す' :- '除外検索の要領で、対象の支社が無い会社を呼び出す'(_地域ならび,_対象の支社が無い会社ならび), concat_atom(_地域ならび,'・',S1), concat_atom(_対象の支社が無い会社ならび,'・',S2), writef('%tなら、%t\n',[S1,S2]), fail. '除外検索の要領で、対象の支社が無い会社を呼び出す'. '除外検索の要領で、対象の支社が無い会社を呼び出す'(_地域ならび,_対象の支社が無い会社ならび) :- findall([_area_name,_対象の支社が無い会社ならび],( '対象の支社が無い会社を呼び出す'(_area_name,_対象の支社が無い会社ならび)), L1), findsetof(_対象の支社が無い会社ならび,( append(_,[[_,_対象の支社が無い会社ならび]|_],L1)), _対象の支社が無い会社ならびパターン), append(_,[_対象の支社が無い会社ならび|_],_対象の支社が無い会社ならびパターン), findall(_area_name,( append(_,[[_area_name,_対象の支社が無い会社ならび]|_],L1)), _地域ならび). '対象の支社が無い会社を呼び出す'(_area_name,_対象の支社が無い会社ならび) :- area(_area_id,_area_name), findsetof([_shop_id,_name],( shop_area(_shop_id,_area_id), shop(_shop_id,_name)), L1), findall(_name,( append(_,[[_shop_id,_name]|_],L1), \+(shop_area(_shop_id,_area_id))), _対象の支社が無い会社ならび). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/365 # # ・DB名:Firebird1.03 # ・テーブル #  ■メイン #   受注番号 受注日 注文社 #   11    2011/12/20 A社 #   12    2011/12/21 B社 #  ■サブ #   連番 受注番号 商品コード 数 #   50  11    A10    100 #   51  11    C30    20 #   52  12    A10    10 #  ■商品 #   商品コード 商品名 カテゴリ 納品番号(商品ごとで重複していません) #   A10     コート 洋服   100 #   C30     帯   和服   504 # # メインの受注番号とサブの受注番号、サブの商品コードと商品の商品コードで # リンクしています。 # # 欲しい結果 # 受注日の期間(いつからいつまで)と、商品のカテゴリと納品番号で、 # 受注の全内容(商品)が知りたいです。 # 受注日:2011/12/01から12/31まで # カテゴリ:洋服 納品番号:100で検索をして # # 受注番号 受注日 注文者 商品コード 商品名 数量 # 11    2011/12/20 A社 A10    コート 100 # 11    2011/12/20 A社 C30    帯   20----★ # 12    2011/12/21 B社 A10    コート 10 # ★受注の全内容が知りたいので、該当する受注番号のサブはすべて表示 # したい。メインの内容は重複表示となります。 # # 丸投げですみませんが、どなたかSQL文をお願いできませんでしょうか。 # テーブルが3つになるとどうしてよいものかわからないです。 # よろしくお願いします。 # # # '受注日の期間(いつからいつまで)と、商品のカテゴリと納品番号で、受注の全内容(商品)が知りたい'(_受注日下限,_受注日上限,_商品カテゴリ,_納品番号) :- 受注番号候補を得る(_受注日下限,_受注日上限,_カテゴリ,_納品番号,_受注番号ならび), findall([_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量],( append(_,[_受注番号|_],_受注番号ならび), 受注番号を鍵にデータベースからの選択(_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量)), LL1), 整列(LL1,LL2), 表示する(LL2). 受注番号候補を得る(_受注日下限,_受注日上限,_カテゴリ,_納品番号,_受注番号ならび) :- findsetof(_受注番号,( メイン(_受注番号,_受注日,_注文社), _受注日 @>= _受注日下限, _受注日 @=< _受注日上限, サブ(_連番,_受注番号,_商品コード,_数量), 商品(_商品コード,_商品名,_カテゴリ,_納品番号)), _受注番号ならび). 受注番号を鍵にデータベースを結合(_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量) :- メイン(_受注番号,_受注日,_注文社), サブ(_連番,_受注番号,_商品コード,_数量), 商品(_商品コード,_商品名,_カテゴリ,_納品番号). 表示する(LL) :- write('受注番号 受注日 注文者 商品コード 商品名 数量\n'), append(_,[[_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量]|R],LL), writef('%10l %8l %8c %8c %8c %14l %8r\n',[_受注番号,_受注日,_注文者,_商品コード,_商品名,_数量]), R = []. % 以下のサイトは # 出典::SQL質疑応答スレ 12問目 #353 # MySQL 5.1 # 株価テーブル kabuka # stock_code ←銘柄コード # vol_date ←出来高年月日 # sp # hp # lp # cp # vol # # 銘柄マスタ stock_info # stoc_code ←銘柄コード # shkbn ←商品区分(0,1,2,3,4) # stk_name ← 銘柄名 # delete_flg 削除区分 # 〜その他いろいろな項目 # # 銘柄マスタの商品区分0及び1は除外して銘柄名を付けて株価テーブルから銘柄ごとの最古登録日と最新登録日の一覧を出したい # # select a.stock_code,stk_name,shkbn,min(vol_date),max(vol_date) # from kabuka a # inner join stock_info b # on a.stock_code = b.stock_code # where # a.stock_code in # (select b.stock_code from stock_info # where delete_flg=0 and shkbn not in(0,4)) # group by a.stock_code # order by shkbn,a.stock_code; # # で、上記のSQLを書いてみたんですが、shkbnが0及び4のもでてしまいます # 出さないようにするにはどうすればいいのでしょうか? # # 銘柄マスタの商品区分0及び1は除外して銘柄名を付けて株価テーブルから銘柄ごとの最古登録日と最新登録日の一覧を出したい :- 一覧を出したい(銘柄マスタの商品区分0及び1は除外して(_銘柄,_銘柄名), 銘柄名を付けて株価テーブルから銘柄ごとの最古登録日と最新登録日を表示する(_銘柄,_銘柄名)). 一覧を出したい(_表示対象,_表示する) :- forall(_表示対象,_表示する). 銘柄マスタの商品区分0及び1は除外して(_銘柄,_銘柄名) :- setof([_stoc_code,_stk_name],( [_stoc_code,_shkbn,_stk_name,_delete_flg] ^ stock_info(_stoc_code,_shkbn,_stk_name,_delete_flg), 商品区分0及び1は除外して(_shkbn)),LL), member([_銘柄,_銘柄名],LL). 商品区分0及び1は除外して(_shkbn) :- _shkbn=\=0, _shkbn=\=1. 銘柄名を付けて株価テーブルから銘柄ごとの最古登録日と最新登録日を表示する(_stock_code,_銘柄名) :- 銘柄名を付けて株価テーブルから銘柄ごとの最古登録日と最新登録日を(_stock_code,_最古登録日,_最新登録日), writef('%t,%t,最古登録日=%t,最新登録日=%t\n',[_stoc_code,_銘柄名,_最古登録日,_最新登録日]). 銘柄名を付けて株価テーブルから銘柄ごとの最古登録日と最新登録日を(_stock_code,_最古登録日,_最新登録日) :- '銘柄名を付けて株価テーブルから銘柄ごとの最古登録日と'(_stock_code,_最古登録日), 最新登録日を(_stock_code,_最新登録日). 銘柄名を付けて株価テーブルから銘柄ごとの最古登録日と(_stock_code,_最古登録日) :- findmin(_vol_date,kabuka(_stock_code,_vol_date,_sp,_hp,_lp,_cp,_vol),_最古登録日). 最新登録日を(_stock_code,_最新登録日) :- findmax(_vol_date,kabuka(_stock_code,_vol_date,_sp,_hp,_lp,_cp,_vol),_最新登録日). findmin(A,B,C) :- findall(A,B,L), 昇順整列した最初の要素(L1,C). 昇順整列した最初の要素(L1,C) :- sort(L,[C|_]). findmax(A,B,C) :- findall(A,B,L1), 昇順整列した最終要素(L1,C). 昇順整列した最終要素(L1,C) :- sort(L1,L2), last(L2,C). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/332 # # oracleです。 # # ・テーブルデータ # テーブルA #  ID |日付 #  100|10/1 #  100|10/2 # 100|10/5 #  101|11/1 #  102|11/1 #  102|11/2 #  103|12/1 # # # テーブルB #  ID |期間(自)|期間(至) #  100|10/1  |10/4 #  101|10/1  |10/30 #  102|11/1  |11/5 #  103|12/1  |12/1 #   # # ・欲しい結果 # #  ID |期間内のカウント #  100|2 #  101|0 #  102|2 #  103|1 #   # # ・説明: # IDをキーに、期間内のIDごとのカウントをとりたいです。 # SQL1本で取得する方法はありますでしょうか? # 列は増やしたくないです。 # テーブルA(100,10/1). テーブルA(100,10/2). テーブルA(100,10/5). テーブルA(101,11/1). テーブルA(102,11/1). テーブルA(102,11/2). テーブルA(103,12/1). テーブルB(100,10/1,10/4). テーブルB(101,10/1,10/30). テーブルB(102,11/1,11/5). テーブルB(103,12/1,12/1). 'IDをキーに、期間内のIDごとのカウントをとりたい'(_ID,_期間_自,_期間_至,_度数) :- findsetof([_ID,_期間_自,_期間_至],( テーブルB(_ID,_期間_自,_期間_至)), LL1), append(_,[[_ID,_期間_自,_期間_至]|_],LL1), count(( テーブルA(_ID,_日付), _日付 @>= _期間_自, _日付 @=< _期間_至), _度数). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/323 # # 【質問テンプレ】 # ・DBMS名とバージョン MySQL 5.1 # ・テーブルデータ # ・欲しい結果 # ・説明 # # テーブル「カート」 # カラム 「セッションID」「商品種別」「カートに入れた時刻」 # # テーブル「カート詳細」 # カラム 「セッションID」「商品コード」 # # テーブル「商品リスト」 # カラム「商品コード」「商品種別」 # # というテーブルがあります。 # # 最後にカートに入れた時刻から12時間以上経過したセッションIDを検索して、 # そのセッションIDを持つレコードを「カート」「カート詳細」の両方から # 全て削除したいのです。 # # 同じセッションIDを持つレコードは、両方のテーブルに複数あります。 # 「注文」テーブルで「セッションID」「商品種別」の組合せはユニークで、 # 「注文詳細」テーブルでは「セッションID」「商品コード」の組合せにユニークです。 # # 結合や副問い合わせを試してみましたが、うまいこと抽出できません。 # SQLで書くやり方があれば教えてください。よろしくお願いします。 # # '最後にカートに入れた時刻から12時間以上経過したセッションIDを検索して、そのセッションIDを持つレコードを「カート」「カート詳細」の両方から全て削除する' :- '最後にカートに入れた時刻から12時間以上経過したセッションIDを検索して'(_セッションID,R), 'そのセッションIDを持つレコードを「カート」「カート詳細」の両方から全て削除する'(_セッションID), R = []. '最後にカートに入れた時刻から12時間以上経過したセッションIDを検索して'(_セッションID,R) :- '最後にカートに入れた時刻から'(_セッションID,R), '12時間以上経過している(_セッションID,_最後にカートに入れた時刻). '最後にカートに入れた時刻から'(_セッションID,R) :- setof(_セッションID,([_セッションID,_商品種別,_カートに入れた時刻] ^ カート(_セッションID,_商品種別,_カートに入れた時刻)),_セッションIDならび), append(_,[_セッションID|R],_セッションIDならび), findmax(_カートに入れた時刻,( カート(_セッションID,_商品種別,_カートに入れた時刻)),_最後にカートに入れた時刻). 'そのセッションIDを持つレコードを「カート」「カート詳細」の両方から全て削除する'(_セッションID) :- retractall(カート(_セッションID,_,_)), retractall(カート詳細(_セッションID,_)). '12時間以上経過している(_セッションID,_最後にカートに入れた時刻) :- split(_最後に入れた時刻,['/',' ',':'],[_年,_月,_日,_時,_分]), 現在の時刻(_年_1,_月_1,_日_1,_時_1,_分_1), '12時間後の日時'(_年,_月,_日,_時,_分,_年_2,_月_2,_日_2,_時_2,_分_2), [_年_1,_月_1,_日_1,_時_1,_分_1] @>= [_年_2,_月_2,_日_2,_時_2,_分_2],!. '12時間後の日時'(_年,_月,_日,_時,_分,_年,_月,_日,_時_2,_分) :- _時_2 is _時 + 12, _時_2 < 24,!. '12時間後の日時'(_年,_月,_日,_時,_分,_年,_月,_日_2,_時_2,_分) :- _時_1 is _時 + 12, _時_2 is _時_1 - 24, _日_2 is _日 + 1,!. retractall(P) :- retract(P), fail. retractall(_). split(_文字列,_区切り記号ならび,[_文字列]) :- 文字列は区切り記号ではない(_文字列,_区切り記号,_区切り記号ならび),!. split(_文字列,_区切り記号ならび,L) :- 区切り記号で区切って行く(_文字列,_区切り記号ならび,L). 文字列は区切り記号ではない(_文字列,_区切り記号,_区切り記号ならび) :- forall(副文字列(_文字列,_前文字列,_区切り記号,_後文字列), \+(member(_区切り記号,_区切り記号ならび))). 区切り記号で区切って行く(_文字列,_区切り記号ならび,[_前文字列|R]) :- 副文字列(_文字列,_前文字列,_区切り記号,_後文字列), member(_区切り記号,_区切り記号ならび), split(_後文字列,_区切り記号ならび,R),!. 副文字列(_文字列,_前文字列,_副文字列,_後文字列) :- sub_atom(_文字列,S,_,R,_副文字列), sub_atom(_文字列,0,S,_,_前文字列), sub_atom(_文字列,_,R,0,_後文字列). % 以下のサイトは # 出典:: http://toro.2ch.net/test/read.cgi/db/1316769778/319 # # tbl_rosen (駅名と備考は1:1) # 路線名  駅名  備考 # ---------------------- # A線   i駅   備考1 # A線   j駅   備考2 # A線   k駅   備考3 # B線   k駅   備考3 # B線   l駅   備考4 # B線   m駅   備考5 # C線   n駅   備考6 # D線   k駅   備考3 # D線   o駅   備考7 # # tbl_shop # 店名  最寄駅 # --------------- # X店   j駅 # X店   m駅 # X店   o駅 # Y店   l駅 # Z店   k駅 # # tbl_rosenは鉄道路線とその駅名のテーブル(1路線に対して1〜n駅ある)、 # tbl_shopは、スーパーの名前と最寄駅(1店に対して0〜nの最寄駅がある) # # <やりたいこと> # ・その店に鉄道で行くことが出来る駅のリストを作成したい # ・ある特定の路線は除外(上の例だと、D線は対象外) # ・乗り換えは考慮しない。 # # →例えば、Z店はk駅が最寄りで、k駅はA線、B線、D線の乗り入れ。D線を除外すると、 # i、j、k、l、m駅から電車(±徒歩)でZ店に行ける # # <最終的に出力したいテーブル) # tbl_output # 店名  最寄駅  備考 # ---------------------- # X店   i駅   備考1 # X店   j駅   備考2 # X店   k駅   備考3 # X店   l駅   備考4 # X店   m駅   備考5 # Y店   k駅   備考3 # Y店   l駅   備考4 # Y店   m駅   備考5 # Z店   i駅   備考1 # Z店   j駅   備考2 # Z店   k駅   備考3 # Z店   l駅   備考4 # Z店   m駅   備考5 # # # 2段階に分ければ(駅で結合して店名、路線名でグループ化(D線除外)した # テンポラリテーブルをつくって、さらにtbl_rosenと結合する)普通にできるのですが、 # 出来れば一発のSQLで出力したいのですが、SQL自体にまだ馴染みが薄く、 # どのように書いて良いのかわかりません # # よろしくお願いします(PostgreSQL8.4です) # # 'その店に鉄道で行くことが出来る駅のリストを作成したい ・ある特定の路線は除外(上の例だと、D線は対象外)・乗り換えは考慮しない。 '(_店名,_除外する路線名ならび,L) :- 店候補(_店名,R), その店に鉄道で行くことができる駅候補(_店名,_路線名ならび), その店に鉄道で行くことが出来る駅のリストを作成する(_店名,_除外する路線名ならび,_路線名ならび), R = []. 店候補(_店名,R) :- findsetof(_店名,( tbl_shop(_店名,_,_)), _店名ならび), append(_,[_店名|R],_店名ならび). その店に鉄道で行くことができる駅候補(_店名,_路線名ならび) :- findsetof(_路線名,( tbl_shop(_店名,_最寄駅,_備考1), tbl_rosen(_路線名,_最寄駅,_備考2)), _路線名ならび). その店に鉄道で行くことが出来る駅のリストを作成する(_店名,_除外する路線名ならび,_路線名ならび) :- append(_,[_路線名|R],_路線名ならび), tbl_rosen(_路線名,_駅名,_備考), \+((member(_路線名,_除外する路線名ならび)), assertz(tbl_output(_店名,_駅名,_備考)), R = []. findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L). findsetof(A,B) :- findall(A,B,C), setof(A,member(A,C),D), member(A,D). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1316769778/317 # # 検索結果の集合の共通部分は求められますか。 # たとえばid=1の結果が{a, b, c, d}でid=2の結果が{b, c, e}なら{b, c}を求めたいです。 # '検索結果の集合の共通部分は求める'(_id1,_id2,_共通する値) :- setof(_値,(テーブル(_id1,_値),テーブル(_id2,_値)),L), member(_共通する値,L). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1316769778/293 # # oracleです。 # # ・テーブルデータ # テーブルA #  ID |状態 #  100|○ #  100|○ #  101|○ #  102|○ #  104|○ #  105|× # テーブルB #  ID |状態 #  100|○ #  100|○ #  100|○ #  103|○ #  105|○ #  106|× # # ・欲しい結果 # #  ID |AのCOUNT(ID)|BのCOUNT(ID) #  100|2 |3 #  101|1 |null #  102|1 |null #  104|1 |null #  105|null |1 # # ・説明: # A,B各テーブルの状態が○であるものをID単位でカウントし、 #  AとBのテーブルを結合したいのですが、SQL1本で可能でしょうか? #  結合する際、どちらかのテーブルのカウントが1以上であれば出力したいです。 # # 'A,B各テーブルの状態が○であるものをID単位でカウントし、AとBのテーブルを結合したいのですが、SQL1本で可能でしょうか? 結合する際、どちらかのテーブルのカウントが1以上であれば出力したいです。'(_ID,CountA,CountB) :- findsetof(_ID,( テーブルA(_ID,○ ); テーブルB(_ID,○ )), L), append(_,[_ID|_],L), count(テーブルA(_ID,○ ),CountA), count(テーブルB(_ID,○ ),CountB). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1316769778/301 # # MySQLで質問させてください。 # ある条件で絞ったレコードを日付でソートして # 最新のn件以降を削除したい場合はどのようなSQLを書くのが良いでしょうか? # 'ある条件で絞ったレコードを日付でソートして最新のn件以降を削除する'(_テーブル,_条件,_n件) :- ある条件で絞ったレコードを(_テーブル,_条件,LL1), 日付でソートして(LL1,LL), 最新のn件以降を(LL,_n件,LL2), 削除する(_テーブル,LL2). ある条件で絞ったレコードを(_テーブル,_条件,_削除する件数,_ある条件で絞ったレコード) :- 属性ならびの取得(_テーブル,_属性名ならび,_属性ならび), P =.. [_テーブル|_属性ならび], findall(_属性ならび,( P, _条件), _ある条件で絞ったレコード). 属性ならびの取得(_テーブル,_属性名ならび,_属性ならび) :- setof([_属性順序,_属性名],( テーブル定義(_テーブル,_属性順序,_属性名)), L1), findall(_属性名,( member([_,_属性名],L2)), _属性名ならび), length(_属性名ならび,Len), length(_属性ならび,Len),!. 日付でソートして(_組ならび,_整列した組ならび) :- テーブル定義(_テーブル,_nth,日付), findall([_日付|_属性ならび],( member(_属性ならび,_組ならび)), LL2), sort(LL2,LL3), 鍵の日付を取り除く(LL3,_整列した組ならび). 最新のn件以降を(LL,_n件,LL2) :- length(LL2,_n件), append(LL1,LL2,LL),!. 削除する(_テーブル,LL) :- append(_,[L|R],LL). P =.. [_テーブル|L], retract(P), R = []. 鍵の日付を取り除く([],[]). 鍵の日付を取り除く([[_|L]|R1],[L|R2]) :- 鍵の日付を取り除く(R1,R2). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1320365280/822 # # [1] 授業単元:c言語プログラミング # [2] 問題文(含コード&リンク):(1,2,3) (1,2,4)...といった数列が続くのlist.txtを読み込み、 # 左の数字が同じかつ真ん中の数字も同じとき、右の数字が大きいものを削除し、link2.txtに書きこむプログラムを作りなさい。 # (この場合、左が1と1かつ真ん中が2と2で右が3と4なので4の方が大きいので(1,2,4)を削除する) # '(1,2,3) (1,2,4)...といった数列が続くのlist.txtを読み込み、左の数字が同じかつ真ん中の数字も同じとき、右の数字が大きいものを削除し、link2.txtに書きこむ' :- get_chars('list.txt',Chars), '左の数字が同じかつ真ん中の数字も同じとき、右の数字が大きいものを削除し、link2.txtに書きこむ'(Chars). '左の数字が同じかつ真ん中の数字も同じとき、右の数字が大きいものを削除し、link2.txtに書きこむ'(Chars) :- ならびに変換(Chars,LL1), '左の数字が同じかつ真ん中の数字も同じとき、右の数字が大きいものを削除し'(LL1,LL2), 'link2.txtに書きこむ'(LL2). ならびに変換([],[]). ならびに変換(['('|R1],[[A,B,C]|R2]) :- append(L0,[)|R3],R1), concat_atom(L0,S), atom_to_term(S,(A,B,C),_), ならびに変換(R3,R2),!. ならびに変換([_|R1],R2) :- ならびに変換(R1,R2). '左の数字が同じかつ真ん中の数字も同じとき、右の数字が大きいものを削除し'(LL1,LL2) :- 左の数字と真ん中の数字でグループを作る(LL1,LL3), グループの中の最小ならびを蒐める(LL3,LL2). 左の数字と真ん中の数字でグループを作る(LL1,LL3) :- findsetof([A,B],( append(_,[[A,B,_]|_],LL1)), LL3). グループの中の最小ならびを蒐める(LL3,LL2) :- findall(L,( グループの中での最小ならび(LL3,L)), LL2). グループの中での最小ならび(LL3,L) :- append(_,[[A,B]|_],LL3), findmin([A,B,C],( append(_,[[A,B,C]|_],LL1)), L). 'link2.txtに書きこむ'(LL2) :- open('link2.txt',write,Outstream), 'link2.txtに書きこむ'(Outstream,LL2), close(Outstream). 'link2.txtに書きこむ'(Outstream,LL2) :- append(_,[[A,B,C]|R],LL2), writef(Outstream,'(%t,%t,%t) ',[A,B,C]), R = [], 最後に改行(Outstream). 最後に改行(Outstream) :- write(Outstream,'\n'). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1316769778/249 # # ・MySQL5です # ・テーブルデータ #  ID|名前|データ #  01|鈴木|0001 #  02|佐藤|0002 #  01|鈴木|0003 # ・欲しい結果 #  ID|名前|*|DATA1|DATA2 #  01|鈴木|2|0001 |0003 #  02|佐藤|1|0002 | # # ・説明:group by と count(*) を使うと↓のように、グループ化され消えてしまう列の値を(この場合`0003`の部分)、↑みたく、行に書出す方法はありますか? #  ID|名前|*|データ #  01|鈴木|2|0001 #  02|佐藤|1|0002 # # ・補足:IDは1~1400、count数は1~97、DATAは1~4000位あります。 # # 欲しい結果(_組) :- 欲しい結果(_組,_). 欲しい結果(_組,_残り鍵ならび) :- 鍵ならびを作る(_鍵ならび), 鍵データの収集(_鍵ならび,_組,_残り鍵ならび). 欲しい結果の表示 :- 欲しい結果(_組,_残り鍵ならび), concat_atom(_組,'|',_組表示文字列), writef('%t\n',[_組表示文字列]), _残り鍵ならび = []. 鍵ならびを作る(_鍵ならび) :- findsetof([_ID,_名前],( テーブルデータ(_ID,_名前,_データ)), _鍵ならび). 鍵データの収集(_鍵ならび,_既に処理した鍵ならび,_組,_残り鍵ならび) :- 一つ鍵を取り出し(_鍵ならび,_既に処理した鍵ならび,_鍵,_残り鍵ならび), 鍵に対応するデータならび(_鍵,_鍵に対応するデータならび), 組の構成(_鍵,_鍵に対応するデータならび,_組). 一つ鍵を取り出し(_鍵ならび,_既に処理した鍵ならび,_鍵,_残り鍵ならび) :- append(_既に処理した鍵ならび,[_鍵|_残り鍵ならび],_鍵ならび). 鍵に対応するデータならび(_鍵,_鍵に対応するデータならび) :- _鍵 = [_ID,_名前], findall(_データ,( テーブルデータ(_ID,_名前,_データ)), _鍵に対応するデータならび). 組の構成(_鍵,_鍵に対応するデータならび,_組) :- length(_鍵に対応するデータならび,_度数), append(_鍵,[_度数|_鍵に対応するデータならび],_組). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1316769778/221 # # DBMSはMysqlの5.0.87です。 # # +------+------------+---------+----------+ # | id   | product_id | assy_id | parts_id | # +------+------------+---------+----------+ # |    1 |          1 |      12 |        1 | # |    2 |          1 |      12 |        2 | # |    3 |          1 |      12 |        3 | # |    4 |          1 |      12 |        3 | # |    5 |          1 |      12 |        5 | # +------+------------+---------+----------+ # # 上記のテーブルで、product_id、assy_id、parts_idが同じレコードが2行以上有るものを抽出したいのです。 # 上記の例だとidが3と4のレコードになります。 # # # '上記のテーブルで、product_id、assy_id、parts_idが同じレコードが2行以上有るものを抽出する'(_id) :- findsetof([_product_id,_assy_id,_parts_id],( テーブル(_id,_product_id,_assy_id,_parts_id)), LL), append(_,[[_product_id,_assy_id,_parts_id]|_],LL), count(テーブル(_,_product_id,_assy_id,_parts_id),Count), Count >= 2. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1316769778/136 # # SQLserverの質問です # # 以下のようなテーブルがあります # *はユニークキーです。 # # DATE* ID1* ID2* VALUE # _______________ # # 200103 AAA 111 20 # 200103 AAA 112 10 # 200103 AAA 113 55 # 200103 AAA 121 60 # 200103 AAA 122 54 # 200103 AAA 123 44 # 200103 BBB 111 24 # 200103 BBB 113 43 # 200103 BBB 114 11 # 200103 BBB 121 11 # ・ # ・ # ・ # 200104 AAA 111 20 # 200104 AAA 112 10 # 200104 AAA 114 5 # 200104 AAA 122 54 # 200104 AAA 123 4 # 200104 BBB 111 24 # 200104 BBB 113 43 # 200104 BBB 112 21 # 200104 BBB 121 11 # 200105 AAA 122 54 # 200105 BBB 113 43 # 200105 BBB 112 21 # 200106 AAA 123 4 # 200106 BBB 111 24 # 200106 BBB 112 21 # # これをDATE=200103とDATE=200104だけとってきて # いかのように外部結合したいのですがどのようにすればよいでしょうか? # FULL JOINを利用したのですがうまくいきません。 # # ID1 ID2 VALUE_201103 VALUE_201104 # _________________________________________ # AAA 111 20 20 # AAA 112 10 10 # AAA 113 55 NULL # AAA 114 NULL 5 # AAA 121 60 NULL # ・ # ・ # ・ # # よろしくお願いいたします。 # # '以下のようなテーブルがあります *はユニークキーです。 DATE* ID1* ID2* VALUE これをDATE=200103とDATE=200104だけとってきて外部結合する'(_ID1,_ID2,_VALUE_200103,_VALUE_200104) :- findsetof([_ID1,_ID2],( テーブル(_日付,_ID1,_ID2,_), '日付が200103か200104'(_日付)), LL1), append(_,[[_ID1,_ID2]|_],LL1), '日付が200103か200104の適合組'(_ID1,_ID2,_VALUE_200103,_VALUE_200104). '日付が200103か200104'('200103'). '日付が200103か200104'('200104'). '日付が200103か200104の適合組'(_ID1,_ID2,_VALUE_200103,_VALUE_200104) :- テーブル('200103',_ID1,_ID2,_VALUE_200103), テーブル('200104',_ID1,_ID2,_VALUE_200104),!. '日付が20103か200104の適合組'(_ID1,_ID2,'NULL',_VALUE_200104) :- \+(テーブル('200103',_ID1,_ID2,_)), テーブル('200104',_ID1,_ID2,_VALUE_200104),!. '日付が200103か200104の適合組'(_ID1,_ID2,_VALUE_200103,'NULL') :- テーブル('200103',_ID1,_ID2,_VALUE_2001003), \+(テーブル('200104',_ID1,_ID2,_)),!. % 以下のサイトは # SQL質疑応答スレ 12問目 #41 # ・DBMS名とバージョン : SQL-Server 2008 # # 売り上げ # ID | AMOUNT     | # --+---------------------- # 1,200 # 1,300 # 1,400 # 2,100 # 4,100 # 5,200 # 5,300 # 6,400 # # 得意先マスタ # ID | NAME     | OYA_CODE # --+----------------------+-------------- # 1,abc商事 本店,1 # 2,abc商事 い支店,1 # 3,abc商事 う支店,1 # 4,def工務店 本店,4 # 5,def工務店 い支店,4 # 6,ghiサービス,6 # 7,jklシステム,7 # # ・欲しい結果 # 1,abc商事 本店,900 # 4,def工務店 本店,600 # 6,ghiサービス,6 # 7,jklシステム,400 # # ・説明 # 会社ごとに、売り上げ合計を出したいです。 # 得意先マスタに親会社コードを持っているので、親会社がある場合は親会社に合算したいです。 # 自分が親会社の場合は自らのコードが入っています。 # 売上('1',200). 売上('1',300). 売上('1',400). 売上('2',100). 売上('4',100). 売上('5',200). 売上('5',300). 売上('6',400). 得意先マスター('1',abc商事本店,'1'). 得意先マスター('2',abc商事い支店,'1'). 得意先マスター('3',abc商事う支店,'1'). 得意先マスター('4',def工務店本店,'4'). 得意先マスター('5',def工務店い支店,'4'). 得意先マスター('6',ghiサービス,'6'). 得意先マスター('7',jklシステム,'7'). '会社ごとに、売り上げ合計を出す' :- 親会社ならび(_親会社ならび), 親会社ごとの合計ならび(_親会社ならび,_親会社ごとの合計ならび), 表示する(_親会社ごとの合計ならび). 親会社ならび(_親会社ならび) :- setof(_OYA_CODE,( [_ID,_NAME,_OYA_CODE] ^ 得意先マスター(_ID,_NAME,_OYA_CODE)),_親会社ならび). 親会社ごとの合計ならび(_親会社ならび,_親会社ごとの合計ならび) :- findall([_OYA_CODE,_合計],( 親会社の合計(_親会社ならび,_OYA_CODE,_NAME,_合計)),_親会社ごとの合計ならび). 親会社の合計(_親会社ならび,_OYA_CODE,_NAME,_合計) :- member(_OYA_CODE,_親会社ならび), 子会社の全合計を得る(_OYA_CODE,_NAME,_合計). 子会社の全合計を得る(_OYA_CODE,_NAME,_合計) :- 子会社ならびを得る(_OYA_CODE,_子会社ならび), findsum(_AMOUNT,子会社の売上(_子会社ならび,_ID,_AMOUNT),_合計). 子会社ならびを得る(_OYA_CODE,_子会社ならび) :- setof(_ID,[_ID,_NAME,_OYA_CODE] ^ 得意先マスター(_ID,_NAME,_OYA_CODE),_子会社ならび). 子会社の売上(_子会社ならび,_ID,_AMOUNT) :- member(_ID,_子会社ならび), 売上(_ID,_AMOUNT). 表示する([]). 表示する(LL) :- 売上合計が0でないものの表示を続ける(LL). 売上合計が0でないものの表示を続ける([[_OYA_CODE,0]|R]) :- 売上合計が0の時は飛ばして表示を続ける(R). 売上合計が0でないものの表示を続ける([[_OYA_CODE,_合計]|R]) :- 売上合計を表示する(_OYA_CODE,_合計,R). 売上合計が0の時は飛ばして表示を続ける(R) :- 表示する(R). 売上合計を表示する(_OYA_CODE,_合計,R) :- \+(_合計=0), writef('%w,%w\n',[_OYA_CODE,_合計]), 表示する(R). findsum(A,B,C) :- findall(A,B,L), sum_list(L,C). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/890 # # 初心者ですが失礼いたします。 # ID | DATA | TIME # --+------ # 1 | aaa | 01:02 # 2 | bbb | 03:42 # 1 | ccc | 02:11 # 3 | bbb | 01:32 # # というデータがあるとしまして # タイムが早い順に並べ替えて重複するIDを除外(この場合は1) # するにはどのようなクエリを書けばよいのでしょうか? # # select * from table ORDER BY `time` DESC # でタイム順には並べることができていますが重複するID(人物) # を除外したいのです。 # # % findsetof/3 % findmin/3 % を参照してください。 'タイムが早い順に並べ替えて重複するIDを除外する'(_ID,_DATA,_TIME) :- findsetof(_ID,( テーブル(_ID,_DATA,_TIME)), L1), append(_,[_ID|_],L1), findmax([_TIME,_ID,_DATA],( テーブル(_ID,_DATA,_TIME)), [_TIME,_ID,_DATA]). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/860 # # 09/01 りんご # 09/02 りんご # 09/02 みかん # 09/03 りんご # 09/03 みかん # 09/03 バナナ # ・・・ # # このようなテーブルからりんごとみかんとバナナの3つ # 全てがある日付を取り出す構文はどうすれば出来ますか? # # '09/01 りんご\n09/02 りんご\n09/02 みかん\n09/03 りんご\n09/03 みかん\n09/03 バナナ\n・・・ このようなテーブルからりんごとみかんとバナナの3つ全てがある日付を取り出す'(_日付) :- findsetof(_日付,( テーブル(_日付,_)), L1), 'りんごとみかんとバナナの3つ全てがある日付'(L1,_日付). 'りんごとみかんとバナナの3つ全てがある'([_日付|R],_日付) :- 'りんごとみかんとバナナの3つ全てがある'(_日付). 'りんごとみかんとバナナの3つ全てがある'([_|R],_日付) :- 'りんごとみかんとバナナの3つ全てがある'(R,_日付). 'りんごとみかんとバナナの3つ全てがある'(_日付) :- テーブル(_日付,りんご), テーブル(_日付,みかん), テーブル(_日付,バナナ),!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/846 # # あるカラムの重複のみを外したものをSELECTするにはどうとればいいですか? # # kadenテーブル # id item price # 1 パソコン 100000 # 2 パソコン 80000 # 3 デジカメ 50000 # 4 プリンター 20000 # 5 デンワ 6000 # # 結果 # 1 パソコン 100000 # 3 デジカメ 50000 # 4 プリンター 20000 # 5 デンワ 6000 # # パソコンを区別するのはidとpriceがありますがidが若い方でお願いします # # 'あるカラムの重複のみを外したものをSELECTする' :- findsetof(_item,( kaden(_id,_item,_price)), L), append(_,[_item|_],L), 第一解のみ取得(_id,_item,_price). 第一解のみ取得(_id,_item,_price) :- kaden(_id,_item,_price),!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/839 # # MySQLです。 # テーブルから最初コラムAで並びかえて、その中の上位30個を # コラムBで並び替えた結果がほしい時はどう書けばいいのでしょうか # # SELECT * FROMT T ORDER BY A,B # だと、Aの中の同じ値の物しかBでソートされないみたいです。 # # 'テーブルから最初コラムAで並びかえて、その中の上位30個をコラムBで並び替えた結果がほしい'(_A,_B) :- length(L0,30), findsetof([_A,_B],( 'T'(_A,_B)), L1), sort(L1,L2), append(L0,_,L2), findall([_B,_A],member([_A,_B],L0),L3), sort(L3,L4), member([_B,_A],L4). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/804 # # 以下のようなテーブルTABがあります。 # # A B C # 1 40 35 # 2 80 50 # 3 10 5 # 4 20 15 # 5 70 60 # # 列Aで昇順にソートして一番小さい値を持つ行を基準に、 # 以下の計算式で列Dを求めたいです。 # # D(n+1)= C(n)× D(n)÷ B(n+1) # nは列Aの順位で求めたい結果は、 # # A B C D # 1 40 35 1 # 2 80 50 0.4375 # 3 10 5 2.1875 # 4 20 15 0.546875 # 5 70 60 0.1171875 # # みたいな感じになります。 # # これってSQLで可能でしょうか? # DBMSはOracle11gR2です。 # # # '列Aで昇順にソートして一番小さい値を持つ行を基準に、以下の計算式で列Dを求めたいです。 D(n+1)= C(n)× D(n)÷ B(n+1)'(L) :- findsetof([_A,_B,_C],'TAB'(_A,_B,_C),LL), LL = [[_A,_B,_C]|R], '以下の計算式で列Dを求める。 D(n+1)= C(n)× D(n)÷ B(n+1)'(R,[_A,_B,_C,1],L). '以下の計算式で列Dを求める。 D(n+1)= C(n)× D(n)÷ B(n+1)'(R,L,L). '以下の計算式で列Dを求める。 D(n+1)= C(n)× D(n)÷ B(n+1)'([[_A_1,_B_1,_C_1]|R],[_A,_B,_C,_D],L) :- _D_1 is _C * _D / _B_1, '以下の計算式で列Dを求める。 D(n+1)= C(n)× D(n)÷ B(n+1)'(R,[_A_1,_B_1,_C_1,_D_1],L). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/788 # # prd1テーブル # # p_id 商品ID # p_name 商品名前 # ---- # prd2テーブル # # p_id 商品ID # p_date 製造年 # ----- # prd3テーブル # # p_id # p_date # p_frame 種類1 # ---- # prd4テーブル # # p_frame # p_pattern 種類2(0又は1が入る) # ---- # prd1の商品IDとprd2の商品IDは1対Nの関係です。 # prd1の全商品に対して # prd1に対するprd2を抽出(inner join でも where でも)した以下のテーブル # # p_id p_date # 1 2001-01-01 # 1 2001-01-02 # 2 2001-01-01 # 2 2001-01-02 # 2 2001-01-03 # # に対して、prd3とprd4によって抽出したテーブルを結合するときに # 商品IDと製造年をキーに結合したいと思っています。 # # prd3はちなみに # # p_id p_date p_frame # 1 2001-01-01 1 # 1 2001-01-02 2 # 1 2001-01-03 3 # 1 2001-01-04 4 # 3 2001-01-01 5 # # prd4は、 # # p_frame p_pattern # 1 0 # 2 1 # 3 0 # 4 1 # 5 1 # 6 1 # # p_id p_date SUM(p_pattern_0) SUM(p_pattern_1) というテーブルを抽出したいです。 # # 1 2001-01-01 5 2 # 1 2001-01-02 3 NULL # 2 2001-01-01 NULL NULL # # といった感じです。prd1とprd2を結合したモノに、 prd3とprd4を結合したいのです。 # 'prd3とprd4によって抽出したテーブルを結合するときに商品IDと製造年をキーに結合する'(_p_id,_p_date,_sum_p_pattern_0,_sum_p_pattern_1) :- findsetof([_p_id,_p_date],( prd1(_p_id), prd2(_p_id,_p_date)), L1), append(_,[[_p_id,_p_date]|_],L1), prd3(_p_id,_p_date,_p_frame), findsum([_p_pattern_0,_p_pattern_1],( prd4(_p_frame,_p_pattern), p_pattern_x(_p_pattern,_p_pattern_0,_p_pattern_1)), [_sum_p_pattern_0,_sum_p_pattern_1]). p_pattern_x(0,1,0). p_pattern_x(1,0,1). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/730 # # MySQLで、以下のような2つのテーブルがあり、parent_idはparentの外部キーとなってます。 # # parent # id p_value # 1 AAA # 2 BBB # # children # parent_id c_value # 1 aaa # 1 bbb # 1 ccc # 2 ddd # 2 eee # # これを # # parent_id p_value c_value # 1 AAA (aaa, bbb, ccc) # 2 BBB (ddd, eee) # # のような形で取り出すことはできますか? # GROUP BYでparent_idでまとめることはできたのですが、c_valueをまとめて取り出す方法がわかりません。 # # 結合情報を一行に纏める(_parent_id,_p_value,_子供の名前ならび) :- findsetof(_parent_id,( parent(_parent_id,_)), _親の名前ならび), append(_,[_parent_id|R],_親の名前ならび), parent(_parent_id,_p_value), findall(c_value,( children(_parent_id,_c_value)), _子供の名前ならび). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/666 # # id id2 hoge # 1 1 a # 2 1 b # 3 1 c # 4 1 d # 5 2 a # 6 2 b # # こんなテーブルにselect * from test group by id2とやると # 4 1 d # 6 2 b # # が出ますが最初に登録した # 1 1 a # 5 2 b # # と出したいのですがどうしたらいいでしょうか? # # test(1,1,a). test(2,1,b). test(3,1,c). test(4,1,d). test(5,2,a). test(6,2,b). 'testテーブル上の、id2をキーにグループ参照をしてキー値を持つ最初の組のみを取り出す'(_id1,_id2,_hoge) :- 'testテーブル上の、id2をキーにグループ参照をして'(_キーならび), 'testテーブル上の、キー値を持つ最初の組のみを取り出す'(_キーならび,_id1,_id2,_hoge). 'testテーブル上の、id2をキーにグループ参照をして'(_キーならび) :- setof(_id2,[_id1,_id2,_hoge] ^ test(_id1,_id2,_hoge),_キーならび). 'testテーブル上の、キー値を持つ最初の組のみを取り出す'([_キー|R],_id1,_id2,_hoge) :- 'testテーブル上の、最初の組のみを取り出す'(_キー,_id1,_id2,_hoge). 'testテーブル上の、キー値を持つ最初の組のみを取り出す'([_|R],_id1,_id2,_hoge) :- 'testテーブル上の、キー値を持つ最初の組のみを取り出す'(R,_id1,_id2,_hoge). 'testテーブル上の、最初の組のみを取り出す'(_id2,_id1,_id2,_hoge) :- once(test(_id1,_id2,_hoge)). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1311089619/710 # # お願いします。 # # [1] 授業単元: 課題 # [2] 問題文 # # 1. ランダムに決めた10個の整数(0〜50)を要素とする配列Aと配列Bを用意する。 # 2. 配列Aと配列Bに共通する整数を表示する。 # # # '1. ランダムに決めた10個の整数(0〜50)を要素とする配列Aと配列Bを用意する。 2. 配列Aと配列Bに共通する整数を表示する。' :- 'ランダムに決めた10個の整数(0〜50)を要素とするならびAとならびBを用意する。'(_ならびA,_ならびB), 'ならびAとならびBに共通する整数を表示する'(_ならびA,_ならびB). 'ランダムに決めた10個の整数(0〜50)を要素とするならびAとならびBを用意する。'(_ならびA,_ならびB) :- length(_ならびA,10), length(_ならびB,10), findall(_要素,( append(_,[_|_],_ならびA), _要素 is random(51)), _ならびA), findall(_要素,( append(_,[_|_],_ならびB), _要素 is random(51)), _ならびB),!. 'ならびAとならびBに共通する整数を表示する'(_ならびA,_ならびB) :- 共通する整数ならび(_ならびA,_ならびB,_共通する整数ならび), 表示する(_ならびA,_ならびB,_共通する整数ならび). 共通する整数ならび(_ならびA,_ならびB,_共通する整数ならび) :- setof(_共通する整数,( member(_共通する整数,_ならびA), member(_共通する整数,_ならびB)), _共通する整数ならび). 表示する(_ならびA,_ならびB,_共通する整数ならび) :- writef('%t,%t,の共通する整数は\n',[_ならびA,_ならびB]), append(_,[_共通する整数|R],_共通する整数ならび), writef('%t ',[__共通する整数]), R = [], write(' です。\n'). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/602 # # SQL Server2008 以下のテーブル「値段」から # # id | 食品 | 値段合計 | 値段1 | 値段2 | 値段3 # ________________________ # # 1 | 肉 |  500  |  500 | # 1 | 魚 |  300  |     | 300 # 1 | 卵 |  200 | 100 | 50 | 50 # 2 | 肉 |  350 | 250 | 100 # 2 | 魚 |  400 | 150 | 250 # # # 以下の結果を得て、新しくテーブル「値段合計」を作りたいです。 # # # id |値段id合計|肉値段合計|肉値段1|肉値段2|肉値段3|魚値段合計|魚値段1|魚値段2|魚値段3|卵値段合計|卵値段1|卵値段2|卵値段3| # _________________________________________________________________________________________________________________________________ # 1 | 1000 | 500 | 500 | | | 300 | | 300 | | 200 | 100 | 50 | 50 | # 2 | 750 | 350 | 250 | 100 | | 400 | 150 | 250 # # # 肉、魚、卵はそれぞれのidに一行しかなく、 # 肉と魚は必ずありますが、卵はあるとは限りません。 # シンプル縦横問題はわかったのですが、複雑になると一挙にわからなくなりました。。 # ご教示お願い致します。 # '「値段合計」を作る' :- findsetof(id,値段(_id,_,_,_,_,_),_idならび), append(_,[_id|R],_idならび), 食品の値段を得る(_id,肉,_肉値段合計,_肉値段1,_肉値段2,_肉値段3), 食品の値段を得る(_id,魚,_魚値段合計,_魚値段1,_魚値段2,_魚値段3), 食品の値段を得る(_id,卵,_卵値段合計,_卵値段1,_卵値段2,_卵値段3), _値段id合計 is _肉値段合計 + _魚値段合計 + _卵値段合計, assertz(値段合計(_id,_値段id合計,_肉値段合計,_肉値段1,_肉値段2,_肉値段3,_魚値段合計,_魚値段1,_魚値段2,_魚値段3,_卵値段合計,_卵値段1,_卵値段2,_卵値段3)), R = []. 食品の値段を得る(_id,_食品,_値段合計,_値段1,_値段2,_値段3) :- 値段(_id,_食品,_値段合計,_値段1,_値段2,_値段3),!. 食品の値段を得る(_id,_食品,0,0,0,0). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/597 # # 下記のようなデータがあるとき、投票回数が3以上に該当する投票者の # レコードを全て除いた結果が欲しいのですがどのようにしたらよいでしょうか? # 595ですがすみません重要なカラムを省いていました。 # その投票者を省くのはそのアンケートNoだけに限定したいのです # # アンケートNo ,投票者 ,投票回数, 誰に投票したか # ------------------------------- # 1   , A   , 1   , D # 1   , B   , 1   , E # 1   , B   , 2   , F # 1   , B   , 3   , G # 1   , C   , 2   , H # 1   , C   , 2   , I # 2   , A   , 1   , D # 2   , B   , 1   , E # 2   , C   , 1   , H # 2   , C   , 2   , I # 2   , C   , 3   , J # # 欲しいデータ # 1   , A   , 1   , D # 1   , C   , 2   , H # 1   , C   , 2   , I # 2   , A   , 1   , D # 2   , B   , 1   , E # # '投票回数が3以上に該当する投票者のレコードを全て除いた結果'(_アンケートNo,_投票者,_投票回数,_誰に投票したか) :- findsetof([_アンケートNo,_投票者],( データ(_アンケートNo,_投票者,_投票回数,_誰に投票したか), _投票回数 >= 3), L), データ(_アンケートNo,_投票者,_投票回数,_誰に投票したか), \+(member([_アンケートNo,_投票者],L)). findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/595 # # 下記のようなデータがあるとき、投票回数が3以上に該当する投票者の # レコードを全て除いた結果が欲しいのですがどのようにしたらよいでしょうか? # # 投票者 ,投票回数, 誰に投票したか # ------------------------------- # A   , 1   , D # B   , 1   , E # B   , 2   , F # B   , 3   , G # C   , 2   , H # C   , 2   , I # # (3以上に該当する投票者Bのレコードを除く) # A   , 1   , D # C   , 2   , H # C   , 2   , I # # '投票回数が3以上に該当する投票者のレコードを全て除いた結果'(_投票者,_投票回数,_誰に投票したか) :- findsetof(_投票者,( データ(_投票者,_投票回数,_誰に投票したか), _投票回数 >= 3), L), データ(_投票者,_投票回数,_誰に投票したか), \+(member(_投票者,L)). findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/558 # # create table aaa ( # id integer not null, # test text not null, # test2 integer not null, # unique (id,test) # ); # # create table bbb ( # id integer not null, # test text not null, # test2 integer not null # unique (id,test) # ); # # aaa # id test test2 # 10 aaa 100 # 10 bbb 200 # 10 ccc 100 # 10 ddd 100 # # bbb # id test test2 # 10 aaa 200 # 10 bbb 100 # # ほしい結果 # id test test2 # 10 aaa 200 # 10 bbb 100 # 10 ccc 100 # 10 ddd 100 # aaa(10,111,200). aaa(10,bbb,100). bbb(10,aaa,200). bbb(10,bbb,100). bbb(10,ccc,100). bbb(10,ddd,100). ほしい結果(_id,_test,_test2) :- findall([_id,_test,_test2],( aaa(_id,_test,_test2)), LL1), findall([_id,_test,_test2],( bbb(_id,_test,_test2)), LL2), append(LL1,LL2,LL), findsetof([_id,_test],( append(_,[[_id,_test]|_],LL)), LL3), findmax([_test2,_id,_test],( append(_,[[_id,_test]|_],LL3), append(_,[[_id,_test,_test2]|_],LL)), LL4), append(_,[[_test2,_id,_test]|_],LL4). % 以下のサイトは # 出典 :: SQL質疑応答スレ 11問目 #520 # SQLiteを使っています。 # # 顧客A(顧客idは100)さんの最新の購入物を表示したいのですが、 # select 顧客.顧客名, 購入物.顧客名 from 顧客 natural join 購入物 where 顧客id=100 order by 購入日 desc limit 1; # # っていま書いていますが、無駄が多い気がします。 # これを手直していただきたいのですが、よろしくお願いします。 # # 顧客(100,'A'). 購入物(100,'ORACLE Ver3.0','19840331'). 購入物(100,'Prolog-KABA','19841201'). '顧客A(顧客idは100)さんの最新の購入物を表示する'(_id,_顧客名,_最新の購入物) :- 顧客(_id,_顧客名), setof([_購入日,_購入物],[_購入日,_購入物] ^ 購入物(_id,_購入物,_購入日),LL), last(LL,[_,_最新の購入物]). ?- '顧客A(顧客idは100)さんの最新の購入物を表示する'(100,_顧客名,_最新の購入物). _顧客名 = 'A', _最新の購入分 = 'Prolog-KABA'. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/429 # # ・DB2 v9.5 # ・テーブルの内容 # ■テーブル成績 # 名前,教科コード,点数 # ========== # Aさん,1,50 # Aさん,2,70 # Bさん,3,80 # # ■テーブル教科 # 教科コード,教科名 # ========== # 1,数学 # 2,国語 # 3,社会 # # ・欲しい結果 # Aさん,数学,50 # Aさん,国語,70 # Aさん,社会,0 # Bさん,数学,0 # Bさん,国語,0 # Bさん,社会,80 # # ・説明 # どう結合したら目的の結果が得られるかわかりません。 # おしえてくださいますでしょうか。 # 成績('Aさん','1',50). 成績('Aさん','2',70). 成績('Bさん','3',80). 教科('1',数学). 教科('2',国語). 教科('3',社会). 成績の表示 :- '成績と教科の結合。ただし、成績がない教科の点数は0とする'(_教科成績ならび), append(_,[[[_名前,_教科名,_点数]|R],_教科成績ならび), writef('%t,%t,%t\n',[_名前,_教科名,_点数]), R = []. '成績と教科の結合。ただし、成績がない教科の点数は0とする'(_教科成績ならび) :- findsetof(_名前,成績(_名前,_,_),_名前ならび), findall([_名前,_教科名,_点数],( append(_,[_名前|R],_名前ならび), 教科(_教科コード,_教科名), 科目成績を得る(_名前,_教科コード,_点数)), _教科成績ならび). 科目成績を得る(_名前,_教科コード,_点数) :- テーブル成績(_名前,_教科コード,_点数),!. 科目成績を得る(_,_,0). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1301067486/220 # # ●正規表現の使用環境 # grepとかegrepとか # # ●検索か置換か? # 検索 # # ●説明 # a,nの2文字のみが含まれる行を検索したい # # ●対象データ # aaa # ann # nana # anana # sin # anans # # ●希望する結果 # 上4つのみ出力 # 下二つは引っかからない # # 'a,nの2文字のみが含まれる行を検索したい'(_行ならび,_行) :- append(_,[_行|_],_行ならび), findsetof(_文字,sub_atom(_行,_,1,_,_文字),[a,n]). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1307166756/843 # # [1] 授業単元:文字列 # [2] 問題文(含コード&リンク): # ファイルinput.txtに、1行最大80文字で空白を挟みながら、英数字が記載されている。 # このinput.txtを読み込み、その中に含まれるアルファベット・数字の各文字が何文字ずつあるかを表示するプログラムを作りなさい # 'ファイルinput.txtに、1行最大80文字で空白を挟みながら、英数字が記載されている。このinput.txtを読み込み、その中に含まれるアルファベット・数字の各文字が何文字ずつあるかを表示する' :- 'このinput.txtを読み込み'(Chars), 'その中に含まれるアルファベット・数字の各文字が何文字ずつあるか'(Chars,L), 表示する(L). 'このinput.txtを読み込み'(Chars) :- get_chars('input.txt',Chars),!. その中に含まれるアルファベット・数字の各文字が何文字ずつあるか(Chars,L) :- 'アルファベット・数字'(Alphabets), setof(Char,( member(Char,Chars), member(Char,Alphabets)), L1), findall([Char,Count],( member(Char,L1), count(member(Char,Chars),Count)), L),!. 表示する(L) :- append(_,[[_文字,_出現数]|R],L), writef('文字 %t %t回\n',[_文字,_出現数]), R = []. 'アルファベット・数字'(Chars) :- findall(Char1,( for(65,N1,90), char_code(Char1,N1)), L1), findall(Char2,( for(97,N2,122), char_code(Char2,N1)), L2), findall(Char3,( for(48,N3,57), char_code(Char3,N3)), L3), append(L1,L2,L4), append(L4,L3,Chars),!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1307166756/670 # # 問題 # 入力ファイル中のアルファベット各文字の個数を数えるプログラムを作成せよ。(大文字と小文字は合わせて数える) # スペースや記号、数字などは数えない。 # # そして、結果を文字数の多い順にソートして出力せよ。 # # コンパイラ # gcc # # 期限 # 2011/6/18 # '入力ファイル中のアルファベット各文字の個数を数えるプログラムを作成せよ。(大文字と小文字は合わせて数える)スペースや記号、数字などは数えない。そして、結果を文字数の多い順にソートして出力する'(_入力ファイル) :- get_chars(_入力ファイル,Chars), setof([_大文字/_小文字],( アルファベットを大文字小文字対にする(Chars,_大文字/_小文字)), L1), findall([Count,_大文字/_小文字],( append(_,[_大文字/_小文字|_],L1), 大文字と小文字の数は合わせる(Chars,_大文字,_小文字Count)), L2), 文字数の多い順にソートして出力する(L2). ファイルに現れるアルファベットを大文字小文字対にする(Chars,_大文字/_小文字) :- member(Char,Chars), アルファベット(Char), to_upper(Char,_大文字), to_lower(Char1,_小文字). 大文字と小文字の数は合わせる(Chars,_大文字,_小文字,Count) :- count(member(_大文字,Chars),Count1), count(member(_小文字,Chars),Count2), Count is Count1 + Count2,!. 文字数の多い順にソートして出力せよ(L2) :- sort(L2,L3), reverse(L3,L), append(_,[Count,A/B]|R],L), writef('%t/%t, %t個\n',[A,B,Count]), R = []. アルファベット(A) :- A @>= 'A', A @=< 'Z',!. アルファベット(A) :- A @>= 'a', A @=< 'z',!. % 以下のサイトは # # I need to write a small Prolog program to count the number of occurrence # of each element in a list. # # numberOfRepetition(input, result) # For example: # # numberOfRepetition([a,b,a,d,c,a,b], X) # can be satisfied with X=[a/3,b/2,d/1,c/1] because a occurs three times, # b occurs 2 times and c and d one time. numberOfRepetition(_input,_result) :- setof(A,member(A,_input),L1), findall(B/Count,( member(B,L1), count(B,_input,Count)), _result). count(A,[],0). count(A,[A|R],X) :- count(A,R,Y), X is Y + 1. count(A,[_|R],X) :- count(A,R,X). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/402 # # 下記のようなユーザーに対する取得ポイントと、消費したポイントのテーブルがあり、 # それらの合計を各ユーザー毎にまとめたいのですが、どうしたらいいでしょうか? # # [取得テーブル t1] # id | user_id | point # --+-------+----- # 1 | 1    | 30 # 2 | 2    | 10 # 3 | 3    | 50 # 4 | 1    | 20 # 5 | 2    | 10 # 6 | 3    | 50 # # [消費テーブル t2] # id | user_id | used_point # --+-------+----- # 1 | 1    | -10 # 2 | 2    | -10 # 3 | 4    | -50 # 4 | 1    | -20 # 5 | 4    | -10 # # <欲しい結果> # user_id | point # -------+----- # 1    | 20 # 2    | 10 # 3    | 100 # 4    | -60 # # # DBMSはMySQLです。 # お願いしますm(_ _)m # # t1(1,1,30). t1(2,2,10). t1(3,3,50). t1(4,1,20). t1(5,2,10). t1(6,3,50). t2(1,1,-10). t2(2,2,-10). t2(3,4,-50). t2(4,1,-20). t2(5,4,-10). '下記のようなユーザーに対する取得ポイントと、消費したポイントのテーブルがあり、それらの合計を各ユーザー毎にまとめたい'(_ユーザごとの合計) :- ユーザを取得(L), findall([_user_id,_合計],( append(_,[_user_id|_],L), t1テーブルの合計(_user_id,_合計1), t2テーブルの合計(_user_id,_合計2), _合計 is _合計1 - _合計2), _ユーザごとの合計). ユーザを取得(L) :- findsetof(_user_,t1(_user_id,_),L1), findsetof(_user_,t2(_user_id,_),L2), 和集合(L1,L2,L). t1テーブルの合計(_user_id,_合計) :- findsum(_point,t1(_user_id,_point),_合計). t2テーブルの合計(_user_id,_合計) :- findsum(_userpoint,t2(_user_id,_userpoint),_合計). 和集合(_集合1,_集合2,_和集合) :- append(_集合1,_集合2,_ならび3), findall(_要素,( append(L0,[_要素|_],_ならび3), \+(append(_,[_要素|_],L0))), _和集合) . % 参照 % findsum/3 http://nojiriko.asia/prolog/findsum.html % findsetof/3 http://nojiriko.asia/prolog/findsetof.html % 以下のサイトは # この問題は秋葉拓哉、岩田陽一、北川宣捻共著 「プログラミングコンテストチャレンジブック」2010年9月 株式会社毎日コミュニケーションズ刊 # のp73より出題させていただきました。 # # プライオリティキューを用いる問題 # Expedition (POJ2431) # # トラックで距離Lの道を移動します。はじめトラックにはガソリンPが # 積まれています。このトラックは距離1走るとガソリンが1消費されます。 # 途中でガソリンが0になってしまうとトラックは停止してしまい、移動に # 失敗してしまいます。途中にはN個ガソリンスタンドがあります。 # 各ガソリンスタンドiは道のスタート地点Aiの地点にあって、Biだけ # ガソリンを補給することができます。トラックの燃料タンクの容量に # 制限はなく、いくらでもガソリンを補給することができます。 # Lトラックは移動完了できるでしょうか? # またその際、最少で何回のガソリンの補給が必要でしょう? # 完了できる場合は最小の補給回数を、できない場合は-1を出力してください。 # # !! 制約 # ・ 1 =< N =< 10000 # ・ 1 =< L =< 1000000, 1 =< P =< 1000000 # ・ 1 =< Ai, 1 =< Bi =< 100 # # # 以下は@Nikoriksこと、紀信邦さんの書いたプログラム。著作権は同氏にあります。 # % On Monday 6th June 2011, @Nikoriks said: % % #lpjp 以前尾崎さんが見つけたトラックとガソリンの問題 % ftp://nojiriko.asia/prolog/POJ2431.html http://poj.org/problem?id=2431 をやってみました.(今日も空き時間に泳いだので) % いくつか例題を試してみないと合ってるかどうかわかりませんね. % q(給油回数,残り距離,燃料量,残りガススタンドのリスト) % Qは横型探索のためのq()のリスト. go:-poj2431(R),display(R),ttynl. a(4,4). a(5,2). a(11,5). a(15,10). road(25,10). init(Q):- road(L,P), setof(xl(Pos,X),a(Pos,X),X0), reverse(X0,Xl), write(Xl),nl, Q=[q(0,L,P,Xl)]. poj2431(Result):- init(Q), solve(Q,Result). poj2431(-1). solve(Q,Result):- pdeq(q(N,A,P,Xl),Q,Q1), A =< P,!, Result=N. solve(Q,Result):- pdeq(q(N,A,P,Xl),Q,Q1), write(q(N,A,P,Xl)),nl, proceed(Xl,N,A,P,Q1,Q2), solve(Q2,Result). proceed([xl(Ai,Bi)|Xl], N,A,P,Q1,Q3):- P >= A-Ai,!, Pi is P-(A-Ai)+Bi, Ni is N+1, penq(q(Ni,Ai,Pi,Xl),Q1,Q2), proceed(Xl,N,A,P,Q2,Q3). proceed(_,_,_,_, Q,Q). penq(X,[Y|L],R):- X @=< Y,!,R=[X,Y|L]. penq(X,[Y|L],[Y|R]):-!, penq(X,L,R). penq(X,[],[X]). pdeq(X,[X|L],L). reverse(L,R):- reverse(L,[],R). reverse([E|X],Y,Z):-!, reverse(X,[E|Y],Z). reverse([],Y,Y). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/324 # # NAME FRUIT NUM # # TARO banana 10 # TARO orange 4 # TARO tomato 3 # TARO grape 2 # TARO apple 1 # TARO melon 1 # TARO mango 1 # HANAKO tomato 30 # HANAKO orange 21 # HANAKO apple 2 # HANAKO banana 1 # GEN mango 12 # GEN grape 6 # GEN orange 4 # GEN banana 1 # GEN apple 1 # # # というテーブルで、各人間の持つ果物のうち上位3種類を取得したいのですが、 # どうすればよろしいでしょうか? # # 欲しい結果 # NAME FRUIT NUM # # TARO banana 10 # TARO orange 4 # TARO tomato 3 # HANAKO tomato 30 # HANAKO orange 21 # HANAKO apple 2 # GEN mango 12 # GEN grape 6 # GEN orange 4 # # # SQLserver2008です。よろしくお願いいたします。 # # テーブルで、各人間の持つ果物のうち上位3種類を取得したい :- findsetof(_名前,テーブル(_名前,_果物,_数量),LL1), append(_,[_名前|R],LL1), findall([_名前,_数量,_果物],( テーブル(_名前,_果物,_数量)), LL2), 大きい順に(LL2,LL3), 上位3位(LL3,[_名前,_果物,_数量]), writef('%t %t %t\n',[_名前,_果物,_数量]), R = []. 大きい順に(L1,L2) :- sort(L1,L3), reverse(L3,L2),!. 上位3位(L,[_名前,_果物,_数量]) :- append(L0,[[_名前,_数量,_果物]|_],L), length(L0,Length), Length =< 2. % 以下のサイトは # Hi everyone, i'm having a bit of a problem with a prolog exercise. # # Assume i have a list of actors that have won oscars. Like this: # # (steven spielberg, steven spielberg, francis ford coppola, michael curtiz) # When a name appears two times, it means that the person won 2 oscars and so on. # What i need to do is to go trough this list and find every actor # that won N or more Oscars, with a predicate like # # wonMoreOscars(Number, Activity):- # Where the number is the N we have to compare with the list. # I already have a function that counts the person that occurs the more times # in a list and the activity the function that person has in the movie, # but is already covered. # # Can somebody help me, i have the code to find the person who has won more Oscars: # # occS([],_,_,_,_):- # write(0),nl, # write('+'),nl, !. # occS([H|T],_,_,_,_):- # occ([H|T],0,0,H,H). # occ([],_,Top,_,Nome):- # write(Nome),nl, # write(Top),nl, # write('+'),nl,!. # occ([H|T],Count,Top,El_corrente,_):- # compare(=,H,El_corrente), # C is Count + 1, # C>=Top, # occ(T,C,C,El_corrente,El_corrente), !. # occ([H|T],_,Top,El_corrente,Nome):- # not(compare(=,H,El_corrente)), # occ(T,1,Top,H,Nome),!. # occ([H|T],Count,Top,_,Nome):- # C is Count + 1, # occ(T,C,Top,H,Nome),!. # But now i'm having trouble with this case. Can somebody help me ? Thx in advance. 'Oscars'(['steven spielberg', 'steven spielberg', 'francis ford coppola', 'michael curtiz']). wonMoreOscars(Number, Activity):- 'Oscars'(L), setof(Name,member(Name,L),L1), findall([Name,Count],( append(_,[Name|_],L1), count(append(_,[Name|_],L),Count), Count >= Number), Activity). count(P,N) :- findall(1,P,L), length(L,N). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/300 # # 上手くいかないので質問させてください。 # ACCESS2007を使っています。 # 年フィールドと月フィールドを用いて「年度」の件数を抽出したいのですが、 # 以下のクエリでは月部分が干渉してか上手く抽出出来ません。 # # 22年4月〜23年3月 といった結果を出したいのですがどうしたらよいでしょうか? # # SELECT 年 FROM Table1 # WHERE (年>21 AND 月>3) AND (年<23 AND 月<4) # # '年フィールドと月フィールドを用いて「年度」の件数を抽出したい'(_テーブル,L) :- テーブル構造(_テーブル,年,M), テーブル構造(_テーブル,月,N), findmax(U,テーブル構造(_テーブル,_,U),Max), length(L1,Max), nth1(M,L1,_年), nth1(N,L1,_月), P =.. [_テーブル|L1], findall(_年度,( P, 年度のルール(_年,_月,_年度)), _年度ならび), findsetof(_年度,( append(_,[_年度|_],_年度ならび), L2), findall([_年度,_度数],( append(_,[_年度|_],L2), count(append(_,[_年度|_],_年度ならび),_度数)), L). 年度のルール(_年,_月,_年度) :- _月 >= 4, _年 = _年度,!. 年度のルール(_年,_月,_年度) :- _月 < 4, _年度 is _年 - 1,!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/288 # # sqlite v3.6.23.1で、 # comment (text) ,postedtime (int) という形式にて掲示板を作っているのですが、 # 「最新の5コメント、但し、24時間以内の投稿については最大50個まで」を求めたくて # # SELECT comment FROM mm ORDER BY postedtime DESC LIMIT 50 # UNION # SELECT comment FROM mm WHERE postedtime > $nowtime - 3600*24 ORDER BY ptime DESC LIMIT 50 # # としてみたのですが($nowtimeには今の時間を入れてます)、 # 1st ORDER BY term does not match in the result set というエラーが出ます。 # (union前後のクエリそれぞれ単独ではエラーは出ません) # # 欲しい結果を求めるにはどのように書けばいいのでしょうか? # # '最新の5コメント、但し、24時間以内の投稿については最大50個まで'(_テーブル,_現在の時刻,P) :- split(_現在の時刻,[' ','/','-',':','.'],[_年,_月,_日,_時,_分,_秒,_]), テーブル構造(_テーブル,時刻,N), findmax(M,テーブル構造(_テーブル,_,M),Max), length(L1,Max), nth1(N,L1,_時刻), P =.. [_テーブル|L1], 選択(P,_年,_月,_日,_時,_分,_秒,L), append(_,[_時刻|_],L), call(P). 選択(P,_年,_月,_日,_時,_分,_秒,L) :- findsetof(_時刻,( call(P), 時刻が24時間以内(_年,_月,_日,_時,_分,_秒,_時刻)), L1), 要素切り取り(L1,L),!. 選択(P,_年,_月,_日,_時,_分,_秒,L) :- findall(_時刻,( call(P), 時刻が24時間以内(_年,_月,_日,_時,_分,_秒,_時刻)), L1), 整列(L1,L2), 要素切り取り(L2,L),!. 選択(P,_,_,_,_,_,_,L) :- findall(_時刻,( call(P)), L1), 整列(L1,L2), length(L,5), append(_,L,L2),!. 要素切り取り(L1,L) :- length(L1,Length), Length >= 50, length(L,50), append(_,L,L1),!. 要素切り取り(L1,L1) :- length(L1,Length), Length >= 5, length < 50,!. 時刻が24時間以内(_年,12,31,_時,_分,_秒,_時刻) :- split(_時刻,['/','-',':','.'],[_年_2,_月_2,_日_2,_時_2,_分_2,_秒_2,_]), _年_1 is _年 + 1, [_年_1,1,1,_時,_分,_秒,_時刻] @>= [_年_2,_月_2,_日_2,_時_2,_分_2,_秒_2,_]),!. 時刻が24時間以内(_年,2,29,_時,_分,_秒,_時刻) :- うるう年(_年), [_年,3,1,_時,_分,_秒,_時刻] @>= [_年_2,_月_2,_日_2,_時_2,_分_2,_秒_2,_]),!. 時刻が24時間以内(_年,2,28,_時,_分,_秒,_時刻) :- \+(うるう年(_年)), [_年,3,1,_時,_分,_秒,_時刻] @>= [_年_2,_月_2,_日_2,_時_2,_分_2,_秒_2,_]),!. 時刻が24時間以内(_年,_月,30,_時,_分,_秒,_時刻) :- append(_,[_月|_],[4,6,9,11]), _月_1 is _月 + 1, [_年,_月_1,1,_時,_分,_秒,_時刻] @>= [_年_2,_月_2,_日_2,_時_2,_分_2,_秒_2,_]),!. 時刻が24時間以内(_年,_月,31,_時,_分,_秒,_時刻) :- append(_,[_月|_],[1,3,5,7,8,10]), _月_1 is _月 + 1, [_年,_月_1,1,_時,_分,_秒,_時刻] @>= [_年_2,_月_2,_日_2,_時_2,_分_2,_秒_2,_]),!. 時刻が24時間以内(_年,_月,_日,_時,_分,_秒,_時刻) :- split(_時刻,['/','-',':','.'],[_年_2,_月_2,_日_2,_時_2,_分_2,_秒_2,_]), _日_1 is _日 + 1, [_年,_月,_日_1,_時,_分,_秒,_時刻] @>= [_年_2,_月_2,_日_2,_時_2,_分_2,_秒_2,_]),!. うるう年(_年文字列) :- atom(_年文字列), atom_to_term(_年文字列,_年整数,_), !, うるう年(_年整数) . うるう年(_年) :- 0 is _年 mod 400,!. うるう年(_年) :- 0 is _年 mod 100, !, fail. うるう年(_年) :- 0 is _年 mod 4,!. うるう年(_年) :- \+(0 is _年 mod 4), fail. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/286 # # sql初心者で申し訳ありません。2つの要素でソートをしたい場合どのようにすればよいでしょうか? # point01(int)、point02(int)があります。point01でソートを行い、point01が同じ場合point02でさらにソートをしなければいけません。 # # '2つの要素でソートをしたい場合どのようにすればよいでしょうか?'(_テーブル,P) :- テーブル構造(_テーブル,point01,N1), テーブル構造(_テーブル,point02,N2), count(テーブル構造(_,_,_),Count), length(L,Count), nth1(N1,L,Point01), nth1(N2,L,Point02), P =.. [_テーブル|L], setof([Point01,Point02],P,L2), append(_,[[Point01,Point02]|R],L2), call(P). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1305867431/159 # # [1] 授業単元: プログラム # [2] 問題文(含コード&リンク): # 英語のテキストデータを入力とし、ファイル内に現れる「単語」(文字列)と # そのカウントをプリントするプログラムを作成せよ。同時に現れた「単語」の総数を # プリントすること。なお、ここで「単語」とはデリミタで区切られるアルファベットだけ # からなる文字列と定義する。「単語」は各データファイルにつき、総単語数は高々2,000単語 # しか現れないと仮定して良い。配列でプログラムする場合、1単語長の最大値を適当に固定して良い。 # # ヒント # デリミタとは、この課題では以下のASCII文字と定義する。 # (a) 制御文字 (iscntrl(c)が1となる文字c) # (b) 数字 (isdigit(c)が1となる文字c) # (c) アルファベット以外の印刷可能文字 (isprint(c)が1で、isalpha(c)が0となる文字c) # '英語のテキストデータを入力とし、ファイル内に現れる「単語」(文字列)とそのカウントをプリントする。同時に現れた「単語」の総数をプリントする'(_ファイル) :- get_chars(_ファイル,Chars), 単語を抽出する(Chars,[],_単語ならび), '「単語」(文字列)とそのカウント'(_単語ならび,_単語とそのカウントならび), 単語とそのカウントをプリントする(_単語とそのカウントならび), 単語の総数(_単語ならび,_単語の総数), 単語の総数をプリントする(_単語の総数). 単語を抽出する([],[],[]) :- !. 単語を抽出する([],L,[_単語]) :- concat_atom(L,_単語),!. 単語を抽出する([_文字|R1],[],R2) :- 'デリミタとは、この課題では以下のASCII文字と定義する'(_文字), 単語を抽出する(R1,[],R2),!. 単語を抽出する([_文字|R1],L1,R2) :- 'デリミタとは、この課題では以下のASCII文字と定義する'(_文字), concat_atom(L1,_単語), 単語を抽出する(R1,[],[_単語|R2]),!. 単語を抽出する([_文字|R1],L1,R2) :- append(L1,[_文字],L2), 単語を抽出する(R1,L2,R2),!. 'デリミタとは、この課題では以下のASCII文字と定義する'(_文字) :- 制御文字(_文字). 'デリミタとは、この課題では以下のASCII文字と定義する'(_文字) :- 数字(_文字). 'デリミタとは、この課題では以下のASCII文字と定義する'(_文字) :- アルファベット以外の印刷可能文字(_文字). 制御文字(_文字) :- char_code(_文字,Char_code), Char_code < 32,!. 数字(_文字) :- append(_,[_文字|_],['0','1','2','3','4','5','6','7','8','9']). アルファベット以外の印刷可能文字(_文字) :- アルファベット以外の(_文字), 印刷可能文字(_文字),!. アルファベット以外の(_文字) :- \+(アルファベット(_文字)). アルファベット(_文字) :- append(_[_文字|_],['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']),!. アルファベット(_文字) :- append(_,[_文字|_],[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]),!. 印刷可能文字(_文字) :- char_code(_文字,Char_code), Char_code >= 32,!. '「単語」(文字列)とそのカウント'(_単語ならび,_単語とそのカウントならび) :- setof(_単語,member(_単語,_単語ならび),_単語ならびのニ), length(_単語ならびのニ,_単語の総数), findall([_単語,_カウント],( append(_,[_単語|_],_単語ならびのニ), count(member(_単語,_単語ならび),_カウント)), _単語とそのカウントならび). 単語とそのカウントをプリントする(_単語とそのカウントならび) :- append(_,[[_単語,_カウント]|R],_単語とそのカウントならび), writef('%t %t\n',[_単語,_カウント]), R = []. 単語の総数(_単語ならび,_単語の総数) :- length(_単語ならび,_単語の総数),!. 単語の総数をプリントする(_単語の総数) :- writef('単語の総数は %t です\n',[_単語の総数]). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1305867431/12 # # [1]c言語 # [2]英文字を読み込み、その一つ一つの文字の個数を求めるプログラム。 # # 実行結果 # 英文字 BBACC # 変換後 B2A1C2 英文字を読み込み、その一つ一つの文字の個数を求める :- 英文字を読み込み(_英文字列), その一つ一つの文字の個数を求める(_英文字列,_その一つ一つの文字の個数), 表示する(その一つ一つの文字の個数). 英文字を読み込み(_英文字列) :- write('英文字列を入力してください : '), get_line(_英文字列), 英文字読み込み診断(_英文字列),!. 英文字を読み込み(_英文字列) :- 英文字を読み込み(_英文字列). 英文字読み込み診断(_英文字列) :- atom_chars(_英文字列,Chars), 全て英文字(Chars),!. 英文字読み込み診断(_文字列) :- writef('読み込まれた文字列 %t に英文字以外の文字が含まれています。\n再入力をお願いします\n',[_文字列]),fail. 全て英文字([]). 全て英文字([A|R]) :- member(A,['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]), 全て英文字(R). その一つ一つの文字の個数を求める(_英文字列,_その一つ一つの文字の個数) :- atom_chars(_英文字列,Chars), setof(_文字,member(_文字,Chars),L1), findall(_文字の個数,( member(_文字,L1), count(member(_文字,Chars),Count), concat_atom([_文字,Count],_文字の個数)), L2), concat_atom(L2,_その一つ一つの文字の個数). 表示する(_その一つ一つの文字の個数) :- writef('%t\n',[_その一つ一つの文字の個数]). % 以下のサイトは # [14回演習問題2.1.1]整数のリストを第一引数に与え,そのリストの要素の中から、 # 和が15になるような3つの数を選ぶ述語fifteen/2をつくりなさい、 # ただしあるひとつの組み合わせに関して、同じ数が重複してはいけない。 # fifteen(_整数のリスト,N1,N2,N3) :- setof(N,member(N,_整数のリスト),L), 組合せ(L,3,[N1,N2,N3]), 15 is N1 + N2 + N3. 組合せ(X,1,[A]) :- member(A,X) . 組合せ([A|Y],N,[A|X]) :- N > 1, M is N - 1, 組合せ(Y,M,X). 組合せ([_|Y],N,A) :- N > 1, 組合せ(Y,N,A). % 以下のサイトは # I'm trying to write a Prolog function that given a list returns the element(s) that repeats most times in that list, like: # # ['a', 'a', 'b', 'c', 'b'] should return ['a', 'b'] ['c', 'a', 'a', 'c', 'b', 'c', 'b'] should return ['c'] etc... # # I'm trying to do it with another function (that counts the number of times something exists on a list (countlist), but I'm not getting anywhere. A little help please? # # listMax(In, Out) :- # listMax(In, Out, 0). # # listMax([H | L], [H | O], Max) :- # countlist(H, [H | L], N), # N > Max, # listMax(L, [H | O], N). # # listMax([H | L], O, Max) :- # countlist(H, [H | L], N), # <=(Max, N), # listMax(L, O, Max). # # listMax([], [], _Max). # # listMax([], _O, _Max). listmax(In,Out) :- setof(A,member(A,In),L1), findall([Count,A],( member(A,L1), count(A,In,Count)), L2), max_1(L2,Max), findall(A,member([Max,A],L2),Out). count(A,[],0). count(A,[A|R],X) :- count(A,R,Y), X is Y + 1. count(A,[_|R],X) :- count(A,R,X). max_1(L,Max) :- findall(A,member([A|_],L),L1), max(L1,Max). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/256 # # カラムA, B, Cがあり、次のような順序で抽出したいと考えています。 # # A  B  C # ○ ○ ○ # ○ ○ × # ○ × × # × ○ × # × × ○ # # どのようにORDER BYを設定すればよいか、よろしければ教えて頂きたいと思います。 # よろしくおねがいしますm(__)m # # 'カラムA, B, Cがあり、次のような順序で抽出したいと考えています。 \\nA  B  C\\n ○ ○ ○ \\n○ ○ × \\n○ × × \\n× ○ × \\n× × ○ \\n'(L) :- setof([_A,_B,_C],テーブル(_A,_B,_C),L). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1294641578/215 # # one_side the_other value # 30 31 23 # 31 30 23 # 4 31 20 # 31 6 20 # 6 31 20 # 31 4 20 # 19 30 19 # 30 19 19 # 7 27 17 # 35 18 17 # : : : # # one_sideとthe_otherのペアとして認識して # 逆順になっているだけのペアは纏める方法を教えて下さい # 'one_sideとthe_otherのペアとして認識して逆順になっているだけのペアは纏める方法を教えて下さい'(_テーブル名,_逆順になっているペア) :- findall([_one_side,_the_other],( 'one_sideとthe_otherのペアとして認識して逆順になっているだけのペアは纏める方法を教えて下さい'(_テーブル名,_one_side,_the_other,L2)), _逆順になっているペア). 'one_sideとthe_otherのペアとして認識して逆順になっているだけのペアは纏める方法を教えて下さい'(_テーブル名,_one_side,_the_other,L2) :- P =.. [_テーブル名,_one_side,_the_other,_value], findsetof([_one_side,_the_other],( call(P)), L1), append(_,[[_one_side,_the_other]|_],L1), findall(_value,( call(P)), L2), ニ要素以上の逆順ならび(L2). ニ要素以上の逆順ならび([A,B]) :- A @> B,!. ニ要素以上の逆順ならび([A,B|R1]) :- A @> B, ニ要素以上の逆順ならび([B|R]). % 以下のサイトは # Hello, I'm trying to make a prolog function (I know it's not a function # but I can't recall it's name) that given a list and a number N # returns a list with the elements that repeat at least N times. # # xpto(['a', 'a', 'a', 'b', 'b', 'c'], Out, 3) should return Out = ['a'] # # xpto(['a', 'a', 'a', 'b', 'b', 'c'], Out, 2) should return Out = ['a', 'b'] # # etc. # # I currently have: # # xpto([], _, _). # # xpto([H | L], O, Num) :- # count(H, [H | L], N), # N = Num, # xpto(L, [H | O], Num). # # xpto([H | L], O, Num) :- # count(H, [H | L], N), # N \= Num, # xpto(L, O, Num). # where in count(A, L, N) N is the number of times A repeats in L, however it doesn't work. I'm pretty sure my algorithm works on paper. # # Any help is appreciated :) xpro(L,Out,N) :- setof(M,member(M,L),L1), findall(A,( member(A,L1), count(member(A,L),Count), Count >= N), Out). % 以下のサイトは # # I'm terrible with prolog. I keep getting a duplicate result in this simple code" # # mates(bob, john). # mates(bob, bill). # mates(andrea, sara). # mates(andrea, bill). # friends(X, Y) :- mates(X, Z), mates(Y, Z). # Calling friends(bob, X). I get bob twice. If only I could use and IF statement argh!!! # # How can I elimiate duplicate results? IE If(result1 == result2) dont print; # # Im looking for similar friends, ie the result should be bob and andrea (because of bill). # mates(bob, john). mates(bob, bill). mates(andrea, sara). mates(andrea, bill). friends(X, Y) :- setof([X,Y],(friends2(X,Y),\+(X=Y)),L), append(L0,[[X,Y]|_],L), \+(append(_,[[Y,X]|_],L0)). friends2(X, Y) :- mates(X, Z), mates(Y, Z). friends2(X, Y) :- mates(X, Z), mates(Z, Y). friends2(X, Y) :- mates(Z, X), mates(Z, Y). friends2(X, Y) :- mates(Z, X), mates(Y, Z). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1301553333/680 # # 1]授業単元:プログラミング # [2]問題文:自己参照型構造体を用いて、以下の処理をするプログラムを作成せよ。 # # 正の数入力→連結リストを辿り、初めて入力された数ならばカウンタを1増やす。同じ数が続けて入力されたらその数のカウンタをさらに1増やす。 # 負の数入力→負の数の絶対値と同じ回数入力された数のデータを削除(例えば、-3を入力し、それ以前に14が3回入力されていたら、それを削除) # 0を入力→データを出力して終了。 # # データ出力→終了の流れはどうにかなりましたが、それ以外で上手い発想が思いつきません。 # # http://ime.nu/codepad.org/yayuXIUa # # 期限は明日までです。 # # 正の数入力後連結リストを辿り、初めて入力された数ならばカウンタを1増やす。負の数入力後負の数の絶対値と同じ回数入力された数のデータを削除0を入力後データを出力して終了 :- 数入力(_数), 連結リストとカウンタを更新していく(_数,[],0,_連結リスト,_カウンタ), データを出力して終了(_連結リスト,_カウンタ),!. 連結リストとカウンタを更新していく(_数,L_1,_カウンタ_1,L,_カウンタ) :- 負の数が入力されたら負の数の絶対値と同じ回数入力された数のデータを削除して連結リストの最後に0を加える(_数,L_1,_カウンタ_1,L,_カウンタ),!. 連結リストとカウンタを更新していく(_数,L_1,_カウンタ_1,L,_カウンタ) :- 初めて入力された数ならばカウンタを1増やす(_数,L_1,_カウンタ_1,L_2,_カウンタ_2), 数入力(_数_2), 連結リストとカウンタを更新していく(_数_2,L_2,_カウンタ_3,L,_カウンタ). 連結リストとカウンタを更新していく(_数,L_1,_カウンタ_1,L,_カウンタ) :- \+(初めて入力された数ならばカウンタを1増やす(_数,L_1,_カウンタ_1,L,_カウンタ)), 数入力(_数_2), 連結リストの最後に数を追加(_数,L_1,L_2), 連結リストとカウンタを更新していく(_数_2,L_2,_カウンタ_1,L,_カウンタ). データを出力して終了(_連結リスト,_カウンタ) :- writef('実行後の連結リストは %t です\nその時点のカウンタは %t です\n',[_連結リスト,_カウンタ]),!. 負の数が入力されたら負の数の絶対値と同じ回数入力された数のデータを削除して連結リストの最後に0を加える(_負の数,L_1,_カウンタ_1,L_2,_カウンタ_2) :- _負の数 < 0, _負の数の絶対値 is abs(_負の数), 負の数の絶対値と同じ回数入力された数のデータを削除(_負の数の絶対値,L_1,L_3), 連結リストの最後に0を加える(L3,L2),!. 連結リストの最後に0を加える(L3,L2) :- append(L_3,[0],L_2),!. 負の数の絶対値と同じ回数入力された数のデータを削除(_負の数の絶対値,L_1,L_2) :- 既に入力された重複しない数ならびを得る(L_1,_数ならび), 削除する数を選択する(_負の数の絶対値,_数ならび,L_1,_削除する数候補), 連結リストからデータを削除(_削除する数候補,L_1,L_2). 既に入力された重複しない数ならびを得る(L_1,_数ならび) :- findsetof(_数,append(_,[_数|_],L_1),_数ならび),!. 削除する数を選択する(_負の数の絶対値,_数ならび,L_1,_削除する数候補) :- findall(_数,( append(_,[_数|_],_数ならび), 負の数の絶対値に要素数が一致する数(_負の数の絶対値,L_1,_数)), _削除する数候補),!. 負の数の絶対値に要素数が一致する数(_負の数の絶対値,L_1,_数) :- count(append(_,[_数|_],L_1),_負の数の絶対値)),!. 連結リストからデータを削除([],L,L) :- !. 連結リストからデータを削除([_数|R],L_1,L) :- ならびから削除(_数,L_1,L_2), 連結リストからデータを削除(R,L_2,L). ならびから削除(_,[],[]) :- !. ならびから削除(_削除する要素,[_削除する要素|_残り対象ならび],_削除されたならび) :- ならびから削除(_削除する要素,_残り対象ならび,_削除されたならび),!. ならびから削除(_削除する要素,[_要素|_残り対象ならび],[_要素|_残り削除ならび]) :- ならびから削除(_削除する要素,_残り対象ならび,_残り削除ならび),!. 初めて入力された数ならばカウンタを1増やす(_数,L_1,_カウンタ_1,L_2,_カウンタ_3) :- \+(append(_,[_数|_],L_1)), _カウンタ_2 is _カウンタ_1 + 1, 同じ数が続けて入力されたらその数のカウンタをさらに1増やす(_数,L_1,_カウンタ_2,_カウンタ_3), 連結リストの最後に数を追加(_数,L_1,L_2),!. 同じ数が続けて入力されたらその数のカウンタをさらに1増やす(_数,L_1,_カウンタ_1,_カウンタ_2) :- last(L_1,_数), _カウンタ_2 is _カウンタ_1 + 1,!. 同じ数が続けて入力されたらその数のカウンタをさらに1増やす(_,_,_カウンタ_1,_カウンタ_1). 連結リストの最後に数を追加(_数,L_1,L_2) :- append(L_1,[_数],L_2). 数入力(_数) :- write('数を入力してください : '), get_line(Line), 数入力診断(Line,_数),!. 数入力(_数) :- 数入力(_数). 数入力診断(Line,_数) :- atom_to_term(Line,_数,_), number(_数),!. 数入力診断(Line,_数) :- writef('入力された %t からは数値が得られません。再入力をお願いします\n',[Line]), fail. % 以下のサイトは # もう一度。テーブルtableにキーAの列とキーBの列がある。 # キーBは時系列で、例えば2011年5月6日なら20110506みたいな感じ。 # 昨日なら20110505だな。つまりプライマリではある。 # こいつをキーA毎に上位5つずつ抜き出したデータテーブル(VIEW)を作りたい # 曜日ごとに、日付の早い順5tuplesをとりだす。 # # 曜日(金曜,'20110401'). # 曜日(月曜,'20110404'). # 曜日(火曜,'20110405'). # 曜日(水曜,'20110406'). # 曜日(金曜,'20110408'). # 曜日(土曜,'20110409'). # 曜日(月曜,'20110411'). # 曜日(火曜,'20110412'). # 曜日(木曜,'20110414'). # 曜日(金曜,'20110415'). # 曜日(土曜,'20110416'). # 曜日(日曜,'20110417'). # 曜日(月曜,'20110418'). # 曜日(火曜,'20110419'). # 曜日(木曜,'20110421'). # 曜日(金曜,'20110422'). # 曜日(土曜,'20110423'). # 曜日(月曜,'20110425'). # 曜日(火曜,'20110426'). # 曜日(水曜,'20110427'). # 曜日(木曜,'20110428'). # 曜日(日曜,'20110501'). # 曜日(月曜,'20110502'). # 曜日(火曜,'20110503'). # 曜日(水曜,'20110504'). # 曜日(木曜,'20110505'). # 曜日(土曜,'20110507'). # 曜日(日曜,'20110508'). # 曜日(月曜,'20110509'). # 曜日(火曜,'20110510'). # 曜日(金曜,'20110513'). # 曜日(土曜,'20110514'). # 曜日(日曜,'20110515'). # 曜日(火曜,'20110517'). # 曜日(水曜,'20110518'). # 曜日(木曜,'20110519'). # 曜日(日曜,'20110522'). # 曜日(月曜,'20110523'). # 曜日(火曜,'20110524'). # 曜日(水曜,'20110525'). # 曜日(木曜,'20110526'). # 曜日(金曜,'20110527'). # 曜日(土曜,'20110528'). # 曜日(日曜,'20110529'). # 曜日(月曜,'20110530'). # 曜日(火曜,'20110531'). 曜日ごとの最初の五つの日付(_曜日,_最初の五つの日付ならび) :- eachsetof(_曜日,曜日(_曜日,_日付),_曜日_1), setof(_日付_1,曜日(_曜日_1,_日付_1),L), limit_n(5,L,_最初の五つの日付ならび). %%%% 汎用述語(ユーザ定義) %%%% limit_n(N,L,_limit_n_L) :- length(L,Len), Len < N, L = _limit_n_L),!. limit_n(N,L,_limit_n_L) :- length(_limit_n_L,N), append(_limit_n_L,_,L). eachsetof(A,B,E) :- findsetof(A,B,L), append(_,[E|_],L). findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L). % 以下のサイトは # I am sorry to ask this question, but it has been a lot since I programmed in Prolog. I think I am used to imperative paradigm. :-( # # I am trying to obtain itemsets from a Prolog relation # # % transaction(Time, Client, Item) # transaction(1, 2, 10). # transaction(1, 2, 20). # transaction(2, 5, 90). # transaction(3, 2, 30). # transaction(4, 2, 40). # transaction(4, 2, 60). # transaction(4, 2, 70). # transaction(5, 4, 30). # transaction(5, 3, 30). # transaction(5, 3, 50). # transaction(5, 3, 70). # transaction(5, 1, 30). # transaction(6, 1, 90). # transaction(6, 4, 40). # transaction(6, 4, 70). # transaction(7, 4, 90). # # % Transformation of transactions to Lists of items per Time per Client. # transaction2(Time, Client, List) :- # setof(Item, Time^Client^transaction(Time, Client, Item), List). # # % Itemsets. # itemsets :- # transaction(Time, Client, _), # transaction2(Time, Client, List), # assert(init(List)). # % Main: # main(Itemsets) :- # itemsets, # setof(Basket, init(Basket), Itemsets), # retractall(init(Basket)). # Then if I consult main(X) I would like to obtain: # # X = [[10, 20], [30], [30, 50, 70], [40, 60, 70], [40, 70], [90]] # I just can't figure out a proper way of doing this. # # If I can get a pointer or a little help I will appreciate very much. # main(Items) :- findsetof([T1,C1],transaction(T1,C1,_),L1), findsetof(L2,( append(_,[[T2,C2]|_],L1), findsetof(Item,transaction(T2,C2,Item),L2)), Items). findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L). % 以下のサイトは # 現在または過去に所属しているコーチの髪の色(C)と少なくともそれより大きい年齢(A)が与えられた時, # プレーヤー(P)の現在または過去に所属したチーム(L1)を探します。 '現在または過去に所属しているコーチの髪の色(C)と少なくともそれより大きい年齢(A)が与えられた時,プレーヤー(P)の現在または過去に所属したチーム(L1)を探します。'(P,C,A,L1) :- find(P,C,A,L1). find(P,C,A,L1) :- setof(P1,( coach(Name,C,A1), A1 > A, team(Team1,Name), player(Team1,L2), append(_,[P1|_],L2)), L3), append(_,[P|_],L3), findall(Team2,( player(Team2,L4), append(_,[P|_],L4)), L1). % **COACH(NAME,SKIN COLOR,AGE)** coach(allegri,blonde,45). coach(leonardo,dark,42). coach(mourinho,blonde,40). % **TEAM(NAME,COACH)** team(milan,allegri). team(inter,leonardo). team(realmadrid,mourinho). % **PLAYER(TEAM,[PLAYERS])** player(milan,[seedorf,zambrotta,gattuso]). player(inter,[seedorf,ronaldo,zambrotta]). player(realmadrid,[seedorf,zidane,ronaldo]). % 以下のサイトは # 1.. 全ての人から尊敬されている # 2.. 自分自身を尊敬している 全ての人から尊敬されている(A) :- findall(B,(尊敬されている(A,B),\+(A==B)),L1), findall(C,(尊敬されている(_,C),\+(A==C)),L2), setof(D,member(D,L2),L3), length(L1,Len), length(L3,Len). 自分自身を尊敬している(A) :- 尊敬されている(A,A). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/137 # # お世話になっています。 # # どのようなSQLになるか教えてください。 # # テーブルA テーブルB テーブルC # E111,001,AR E111,001,AR E111,001,AR # E111,001,AY E111,001,AY E111,001,AY # E111,002,AR E111,003,AR E111,004,AR # # 上記のような同じキー項目(ID,番号,コード)を持つ3つのテーブルがあるとき、 # # E111,001,AR,E111,001,AR,E111,001,AR # E111,001,AY,E111,001,AY,E111,001,AY # E111,002,AR,'','','','','','' # '','','',E111,003,AR,'','','' # '','','','','','',E111,004,AR # # の形でレコードを取得するにはどのようなSQLになりますか? # # お願いします。 # # # '上記のような同じキー項目(ID,番号,コード)を持つ3つのテーブルがあるとき、3レコードを併記する'(L) :- findsetof([A,B],テーブルA(A,B,_),L1), findsetof([A,B],テーブルB(A,B,_),L2), findsetof([A,B],テーブルC(A,B,_),L3), append(L1,L2,L3,L4), findsetof([A,B],append(_,[[A,B]|_],L4),L5), findall([A1,B1,X,A2,B2,Y,A3,B3,Z],( append(_,[[A,B]|_],L5), '3レコード選択'(A,B,A1,B1,X,A2,B2,Y,A3,B3,Z), \+((X='',Y='',Z=''))),L). '3レコード選択'(A,B,A1,B1,X,A2,B2,Y,A3,B3,Z) :- 選択A(A,B,A1,B1,X), 選択B(A,B,A2,B2,Y), 選択C(A,C,A3,B3,Z). 選択A(A,B,'','','') :- \+(テーブルA(A,B,X)),!. 選択A(A,B,A,B,X) :- テーブルA(A,B,X). 選択B(A,B,'','','') :- \+(テーブルB(A,B,X)),!. 選択B(A,B,A,B,X) :- テーブルB(A,B,X). 選択C(A,B,'','','') :- \+(テーブルC(A,B,X)),!. 選択C(A,B,A,B,X) :- テーブルC(A,B,X). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1301553333/212 # # [1]C言語演習 # [2]問題文 # 次の形式のタブ区切りファイルがある。(行数は最大で1000万行とする) # 生徒ID クラス名 国語得点 数学得点 英語得点 # 生徒IDは8桁の0から9で構成される文字列 # クラス名は4桁の0から9で構成される文字列 # 国語得点、数学得点、英語得点は3桁の0から9で構成される文字列とする。 # # (2)それぞれの教科の得点が所属しているクラスの各教科の平均点の大小関係と # 同じ生徒をリストアップせよ # ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の # 大小関係は不問として出力する。(3つが一致している場合はそのクラスの生徒全員 # がリストアップされることになる # [3] OSはLinux,言語はCです。(C++は不可) # [4] 4/30まで # [5] stdlib.h stdio.h string.hをincludeしても良いがそれ以外は不可だそうです # よろしくお願いします。 # # それぞれの教科の得点が所属しているクラスの各教科の平均点の大小関係が同じ生徒をリストアップ(_ファイル) :- get_split_lines(_ファイル,['\t'],LL), findsetof(_クラス,append(_,[[_,_クラス,_,_,_]|_],LL),_クラスならび), findall([_クラス,_パターン],( append(_,[_クラス|_],_クラスならび), パターン(LL,_クラス,_国語平均点,_数学平均点,_英語平均点,_パターン)), _クラス・パターンならび), append(_,[[_ID,_クラス,_国語,_数学,_英語]|R],LL), パターンが一致したら表示(_ID,_クラス,_クラスパターンならび,_国語,_数学,_英語), R = [],!. パターンが一致したら表示(_ID,_クラス,_クラス・パターンならび,_国語,_数学,_英語) :- append(_,[[_クラス,_パターン]|_],_クラス・パターンならび), パターン判断(_パターン,_国語,_数学,_英語), write_formatted('%t\n',[_クラス,_ID]),!. パターンが一致したら表示(_,_,_,_,_,_). パターン(LL,_クラス,_国語平均点,_数学平均点,_英語平均点,_パターン) :- findavg(_国語,append(_,[[_,_クラス,_国語,_,_]|_],LL),_国語平均点), findavg(_数学,append(_,[[_,_クラス,_数学,_,_]|_],LL),_数学平均点), findavg(_英語,append(_,[[_,_クラス,_英語,_,_]|_],LL),_英語平均点), パターン(_パターン,_国語平均点,_数学平均点,_英語平均点). パターン(1,A,B,C) :- A >B,B > C,!. パターン(2,A,B,C) :- A >C,C > B,!. パターン(3,A,B,C) :- B >A,A > C,!. パターン(4,A,B,C) :- B >C,C > A,!. パターン(5,A,B,C) :- C >A,A > B,!. パターン(6,A,B,C) :- C >B,B > A,!. パターン(7,E,E,C) :- \+(E=C),E > C,!. パターン(8,E,E,C) :- \+(E=C),E < C,!. パターン(9,E,B,E) :- \+(E=B),E > B,!. パターン(10,E,B,E) :- \+(E=B),E < B,!. パターン(11,A,E,E) :- \+(E=C),E < A,!. パターン(12,A,E,E) :- \+(E=C),E > A,!. パターン(13,E,E,E). パターン判断(_パターン,A,B,C) :- _パターン < 7, パターン(_パターン,A,B,C),!. パターン判断(7,A,B,C) :- C < A,C < B,!. パターン判断(8,A,B,C) :- C > A,C > B,!. パターン判断(9,A,B,C) :- B < A,B < C,!. パターン判断(10,A,B,C) :- B > A,B > C,!. パターン判断(11,A,E,E) :- A < B,A < C,!. パターン判断(12,A,E,E) :- A > B,A > C,!. パターン判断(13,_,_,_). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1301553333/212 # # [1]C言語演習 # [2]問題文 # 次の形式のタブ区切りファイルがある。(行数は最大で1000万行とする) # 生徒ID クラス名 国語得点 数学得点 英語得点 # 生徒IDは8桁の0から9で構成される文字列 # クラス名は4桁の0から9で構成される文字列 # 国語得点、数学得点、英語得点は3桁の0から9で構成される文字列とする。 # # (1)各教科の得点の和が同じ生徒達のグループについて、そのグループが何人で何クラスの # 生徒から構成されているかを、得点和毎に表出力せよ # ただし0人で構成されるグループについては出力する必要がない。 # 形式例 # 得点:123 人数:5人 グループ数:4 # 得点:128 人数:3人 グループ数:3 # 得点:214 人数:11人 グループ数:9 # ............ # # (2)それぞれの教科の得点が所属しているクラスの各教科の平均点の大小関係と # 同じ生徒をリストアップせよ # ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の # 大小関係は不問として出力する。(3つが一致している場合はそのクラスの生徒全員 # がリストアップされることになる # [3] OSはLinux,言語はCです。(C++は不可) # [4] 4/30まで # [5] stdlib.h stdio.h string.hをincludeしても良いがそれ以外は不可だそうです # よろしくお願いします。 # # '各教科の得点の和が同じ生徒達のグループについて、そのグループが何人で何クラスの生徒から構成されているかを、得点和毎に表出力せよ'(_ファイル) :- get_split_lines(_ファイル,['\t'],LL), findall([_得点合計,_クラス名],( append(_,[[_生徒ID,_クラス名,_国語得点,_数学得点,_英語得点]|_],LL), _得点合計 is _国語得点,_数学得点,_英語得点), L1), findsetof(_得点合計,( append(_,[[_得点合計,_]|_,L1)), L2), findsetof([_得点合計,_クラス]( append(_,[[_得点合計,_クラス]|_,L1)), L3), findall([_得点合計,_グループ人数,_クラス数],( append(_,[_得点合計|_],L2), count(append(_,[[_得点合計,_]|_],L1),_グループ人数)), count(append(_,[[_得点合計,_]|_],L3),_クラス数)), _得点合計・グループ人数・クラス数集計ならび), 出力する(_得点合計・グループ人数・クラス数集計ならび). 出力する(_得点合計・グループ人数・クラス数集計ならび) :- append(_,[[_得点合計,_グループ人数,_クラス数]|R],_得点合計・グループ人数・クラス数集計ならび), write_formatted('得点:%t 人数:%t人 グループ数:%t\n',[_得点合計,_グループ人数,_クラス数]), R = [],!. % 以下のサイトは # http://bit.ly/dIOWsn test(t1,[a,b,c]). test(t2,[a,b]). test(t3,[a,d]). test(t4,[e,f]). test(t5,[e,f,b,c,a]). ある要素を含む集合名を蒐集する(_要素ならび,_蒐集された集合名) :- findsetof(_集合名,( append(_,[_要素|_],_要素ならび), test(_集合名,_集合), append(_,[_要素|_],_集合)), _蒐集された集合名). findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/106 # # ストアドプロシージャについて質問させてください。 # # 簡単な結果を返すクエリ # SELECT A,B,C FROM TEST # # といったクエリの結果を戻り値として返すストアドを作成したいのですが # どのように書けば良いのかわかりません。 # # 単一の列のみを返す方法ならわかったのですが、複数列を返す方法が # 分からないといった状態です。 # テーブル構造('TEST',1,'A'). テーブル構造('TEST',2,'B'). テーブル構造('TEST',3,'C'). 簡単な結果を返すクエリ(_テーブル名,_選択項ならび,_値ならび) :- count(テーブル構造('TEST',_,_),Len), length(_値ならび,Len), findsetof(_,( テーブル構造(_テーブル名,Nth,_)), L), P =.. [_テーブル|_変数ならび], call(P), 選択項と値の結合(L,_選択項ならび,_値ならび). 選択項と値の結合(_テーブル名,L,[],[]) :- !. 選択項と値の結合(_テーブル名,L,[_選択項|R1],[_値|R2]) :- テーブル構造(_テーブル名,Nth,_選択項), list_nth(Nth,L,_値), 選択項と値の結合(_テーブル名,L,R1,R2). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/92 # # 環境はoracle9iです。 # # ■テーブルの構成 # |年度|月|部署コード|商品コード|金額| # # ■テーブルの内容 # |2010|01|AAA|001|1000| # |2010|02|AAA|001|2000| # |2010|01|AAA|001|3000| # |2010|01|AAA|002|3000| # |2010|02|BBB|003|4000| # |2010|01|CCC|001|5000| # |2010|03|CCC|001|6000| # # 上記のようなテーブルがあり、 # これを # と、ここまでなら上の4つでGROUP BYしてあげれば良いのですが、 # そこに年度,部署コード,商品コードでサマリした # 「累計金額」列を加える必要があります。(イメージは下記のとおりです。) # # # ■抽出結果の構成 # |年度|月|部署コード|商品コード|金額|累計金額| # # ■抽出結果の内容 # |2010|01|AAA|001|4000|6000| # |2010|02|AAA|001|2000|6000| # |2010|02|BBB|003|4000|4000| # |2010|01|CCC|001|5000|11000| # |2010|03|CCC|001|6000|11000| # # # GROUP BYと別の集計単位で列を作ることが可能か、 # 可能であればどのようなSQLを書くべきか、 # というところを教えてください。 # # '|年度|月|部署コード|商品コード|金額| テーブルを年度,月,部署コード,商品コードでサマリした値にさらに年度,部署コード,商品コードでサマリした値を付加した行表示' :- 鍵ならびの生成([_年度,_部署コード,_商品コード],テーブル(_年度,_月,_部署コード,_商品コード,_金額),_鍵ならびの一), 鍵ならびの生成([_年度,_月,_部署コード,_商品コード],テーブル(_年度,_月,_部署コード,_商品コード,_金額),_鍵ならびの二), append(_,[[_年度,_部署コード,_商品コード]|R],_鍵ならびの一), 金額制約(_鍵ならびの二,_年度,_月,_部署コード,_商品コード,_金額月合計,_金額総合計), writef('|%t|%t|%t|%t|%t|%t\n',[_年度,_月,_部署コード,_商品コード,_金額月合計,_金額総合計]), R = []. 金額集約(L2,_年度,_月,_部署コード,_商品コード,_金額月合計,_金額総合計) :- 年度・部署コード・商品コード集約(_年度,_部署コード,_商品コード,_金額総合計), append(_,[[_年度,_月,_部署コード,_商品コード]|_],L2), 年度・月・部署コード・商品コード集約(_年度,_月,_部署コード,_商品コード,_金額月合計). 年度・月・部署コード・商品コード集約(_年度,_月,_部署コード,_商品コード,_金額合計) :- findsum(_金額,( テーブル(_年度,_月,_部署コード,_商品コード,_金額)), _年度・月・部署コード・商品コード集約). 年度・部署コード・商品コード集約(_年度,_部署コード,_商品コード,_金額合計) :- findsum(_金額,( テーブル(_年度,_月,_部署コード,_商品コード,_金額)), _年度・部署コード・商品コード集約). 鍵ならびの生成(_鍵変数ならび,_述語,_鍵ならび) :- findsetof(_鍵変数ならび,_述語,_鍵ならび). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/12 # # 以下のようなテーブルがあるとします。 # [テーブル名:経費TBL] # 会社 , 部署 , 年度 , 月 , 経費 # ------------------------------- # AAA , AAA01 , 2009 , 1 , 10000 # AAA , AAA01 , 2009 , 1 , 20000 # AAA , AAA01 , 2009 , 2 , 30000 # AAA , AAA01 , 2009 , 3 , 40000 # BBB , AAA01 , 2009 , 4 , 50000 # BBB , AAA01 , 2010 , 1 , 60000 # CCC , AAA01 , 2010 , 1 , 70000 # CCC , AAA01 , 2010 , 1 , 80000 # # ここから以下のような、 # 会社別、部署別の集計データを作成したいとします。 # 会社 , 部署 , 200901経費計 , 200902経費計 , … , 201012経費計 # # この時、経費計列の条件指定はどうしたら良いのでしょうか? # # '会社別、部署別の集計データを作成したいとします。 会社 , 部署 , 200901経費計 , 200902経費計 , … , 2010122経費計 ' :- 見出し表示, findsetof([_会社,_部署],経費TBL(_会社,_部署,_,_,_),L1), append(_,[[_会社,_部署]]|R],L1), findall(_経費計,( 年度・月の生成(_年度,_月), findsum(_経費,( 経費TBL(_会社,_部署,_年度,_月,_経費)), _経費計)), _経費ならび), concat_atom(_経費ならび,',',_経費月別表示), write_formatted('%t,%t,%t\n',[_会社,_部署,_経費月別表示]), R = []. 年度・月の生成(2009,_月) :- for(1,_月,12). 年度・月の生成(2010,_月) :- for(1,_月,12). 見出し表示 :- write(' 会社 , 部署 '), 年度の生成(_年,_月), write_formatted_atom(S,', %4d%02d経費計 ',[_年,_月]), write(S), fail. 見出し表示 :- nl. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/8 # # よくある質問3 # # (問) # ID HOGE # 01 A # 01 B # 01 C # 02 A # 03 B # # HOGEをAもBもCも持っている、ID:01だけ取り出すにはどうすればよかですか # # (答1) # SELECT id # FROM TableName # WHERE hoge in ('A','B','C') # GROUP BY id # HAVING count(DISTINCT hoge) = 3 # ; # # (答2) # select * # from TableName T1 # where not exists (select * #          from (values 'A', 'B', 'C') T2 (HOGE) #          where not exists (select * #                   from TableName T3 #                   where T1.ID = T3.ID #                   and T2.HOGE = T3.HOGE #                   ) #          ) # ; # ※valuesの部分(Table Value Constructor)はDBMSによって文法がかなり違うので注意 # # 'HOGEをAもBもCも持っている、ID:01だけ取り出す'(L,_ID) :- findsetof(_ID,'TableName'(_ID,_)), 関係の割り算(_ID,L). 関係の割り算(_,[]):- !. 関係の割り算(_ID,[_HOGE|R]) :- 'TableName'(_ID,_HOGE), 関係の割り算(_ID,R). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/7 # # よくある質問2 # # (問) # key   data # ---------------- # 1     a # 1     a # 1     b # 1     b # 1     a # 2     b # 2     a # 2     a # # というテーブルから # # key   a   b # -------------------- # 1    3   2 # 2    2   1 # # というExcelのピボットの様なデータを取得したいのですが、どういうSQLになりますか? # a,bというのは固定なので、仮にcというデータがあっても無視して構いません。 # # (答) # SELECT key, #     SUM(CASE data WHEN 'a' THEN 1 END) AS a, #     SUM(CASE data WHEN 'b' THEN 1 END) AS b # FROM table # GROUP BY key # ORDER BY key # ; # 'Excelのピボットの様なデータを取得したい' :- findsetof(_data,table(_,_data),L1), findsetof(_key,table(_key,_data),L2), append(_,[_key|R],L2), findall(Count, count((append(_,[_data|_],L1),table(_key,_data)),Count), L3), concat_atom([_key|L3],',',S), write_formatted('%t\n',[S]), R = []. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1299305530/6 # # よくある質問1 # # (問) # ID | DATE     | DATA # --+----------+----- # 1 | 2007-11-11 | aaa # 2 | 2007-11-11 | bbb # 1 | 2007-11-10 | ccc # 3 | 2007-11-12 | ddd # 3 | 2007-11-11 | eee # 4 | 2007-11-10 | fff # 1 | 2007-11-12 | ggg # # このようなテーブルから、下記のように # # 1 | 2007-11-12 | ggg # 3 | 2007-11-12 | ddd # 2 | 2007-11-11 | bbb # 4 | 2007-11-10 | fff # # 各idに対して最新の1件だけ抽出するSQLの書き方を教えてください。 # # (答) # select A.ID, #     A.DATE, #     A.DATA # from TableName A #    inner join #    (select ID, max(DATE) as MAX_DATE #     from TableName #     group by ID #    ) B #    on A.ID = B.ID #    and A.DATE = B.MAX_DATE # ; # 'TableName'(1,'2007-11-11',aaa). 'TableName'(2,'2007-11-11',bbb). 'TableName'(1,'2007-11-10',ccc). 'TableName'(3,'2007-11-12',ddd). 'TableName'(3,'2007-11-11',eee). 'TableName'(4,'2007-11-10',fff). 'TableName'(1,'2007-11-12',ggg). '各idに対して最新の1件だけ抽出する'(_ID,_DATE,_DATA) :- findsetof(_ID,'TableName'(_ID,_,_),L1), append(_,[_ID|_],L1), findmax([_DATE,_ID,_DATA],( 'TableName'(_ID,_DATE,_DATA)), [_DATE,_ID,_DATA]). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/967 # # # ■DBMS名とバージョン # Firebird 1.03 # ■テーブルデータ (注文データベースのようなものです) # ・Main 主情報テーブルMIDがキー # MID HACCHUBI # 1 2011/03/01 # ・DETAIL 明細テーブルDIDがキー MID,IIDが参照キー # DID MID IID KOSU # 1  1  1  100 # 2  1  2  30 # ・ITEM 商品テーブルIIDがキー # IID NAMAE ZAIKO OPOINT BIKO # 1  HOGE  20  10   0 # 2  HUGA  50  5    1 # ■欲しい結果 # 2011/1/1から1/31の注文のあった各アイテムの個数(DETAIL.KOSU)の平均値が10以上の場合、 # 該当するアイテムの注文ライン(ITEM.OPOINT)に、その平均値を入れて更新。平均値が10未満の場合、 # ITEM.OPOINTに0を入れる。ただしアイテムの備考(ITEM.BIKO)が1の場合は、ITEM.OPOINTには # 空欄(NULL)にする。 # ■説明 # といいますか、上記の欲しい結果が全てなのですが、どう書いていいのかちょっと見当がつきません。 # 在庫の仕入れをする個数(ITEM.OPOINT)の設定をコンピュータにさせようとしているのですが・・・。 # 丸投げで申し訳ありませんが、どなたかお願いします。 '2011/1/1から1/31の注文のあった各アイテムの個数(DETAIL.KOSU)の平均値が10以上の場合、該当するアイテムの注文ライン(ITEM.OPOINT)に、その平均値を入れて更新。平均値が10未満の場合、ITEM.OPOINTに0を入れる。ただしアイテムの備考(ITEM.BIKO)が1の場合は、ITEM.OPOINTには空欄(NULL)にする' :- findsetof(_MID,( 'Main'(_MID,_HACCHUBI), _HACCHUBI @>= '20110101', _HACCHUBI @=< '20110131'), L1), findsetof(_IID,( 'DETAIL'(_DID,_MID,_IID,_KOSU), append(_,[_MID|_],L1)), L2), append(_,[IID|R],L2), findavg(_KOSU,( 'DETAIL'(_DID,_MID,_IID,_KOSU), append(_,[_MID|_],L1)), AVG), 'ITEM更新'(IID,AVG), R = []. 'ITEM更新'(IID,AVG) :- retract('ITEM'(_IID,_NAMAE,_ZAIKO,_OPOINT,'1')), assertz('ITEM'(_IID,_NAMAE,_ZAIKO,'',_BIKO)),!. 'ITEM更新'(IID,AVG) :- AVG >= 10, write_formatted_atom(S,'%t',[AVG]), retract('ITEM'(_IID,_NAMAE,_ZAIKO,_OPOINT,_BIKO)), assertz('ITEM'(_IID,_NAMAE,_ZAIKO,S,_BIKO)),!. 'ITEM更新'(IID,AVG) :- AVG < 10, retract('ITEM'(_IID,_NAMAE,_ZAIKO,_,_BIKO)), assertz('ITEM'(_IID,_NAMAE,_ZAIKO,'0',_BIKO)),!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1296387672/580 # # [1]授業単元:プログラミング # [2]問題文 # 担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。 # [3]環境 #  [3.1]OS:Windows #  [3.2]コンパイラ名 Borland C++ compiler 5.5 #  [3.3]言語:C # [4]期限:無期限 # '担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。' :- abolish(担当者別売上/2), 担当者名と売上を入力する(_担当者名,_売上), '担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。'(_担当者名,_売上),!. '担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。' :- 担当者別売上合計の表示, 売上合計の表示. 担当者名と売上を入力する(_担当者名,_売上) :- write('担当者名を入力してください : '), get_line(_担当者名), \+(_担当者名 = 'END'), write('売上を入力してください : '), get_integer(_売上),!. '担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。'(_担当者名,売上) :- assertz(担当者別売上(_担当者名,_売上)), 担当者名と売上を入力する(_担当者名2,_売上2), '担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。'(_担当者名2,売上2). 担当者別売上合計の表示 :- findsetof(_担当者,( 担当者別売上(_担当者,_)), _担当者ならび), append(_,[_担当者|R],_担当者ならび), findsum(_売上,担当者別売上(_担当者,_売上),_担当者別売上合計), wr('担当者:%t,売上合計:%t\n',[_担当者,_担当者別売上合計]), R = []. 売上合計の表示 :- findsum(_売上,担当者別売上(_,_売上),_売上合計), write_formatted('総売上合計は %t です。\n',[_売上合計]). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/879 # # ・DBMS名とバージョン # oracle9i / 10g # ・テーブルデータ # 部署ID 大分類 中分類 小分類 予算 # -------+------+-------+------+--- # 01 01 01 01 2500 # 01 02 01 01 1000 # 01 02 02 02 100 # 02 01 01 01 100 # 02 01 02 02 0 # 02 02 02 02 1000 # 02 03 01 01 0 # 03 01 01 01 500 # # ・欲しい結果 # 上のテーブルの時、 # (大分類=01and予算>50) and (大分類=02and予算<2000) # の部署IDを取得したい。 # ・説明 # とりたい結果は01,02ですが上のSQLを # そのまま書くと当然結果はnullですし、 # 括弧の間のandをorにすると03も取得されてしまいます。 # なにか良い方法はないでしょうか? # # テーブルデータ('01','01','01','01',2500). テーブルデータ('01','02','01','01',1000). テーブルデータ('01','02','02','02',100). テーブルデータ('02','01','01','01',100). テーブルデータ('02','01','02','02',0). テーブルデータ('02','02','02','02',1000). テーブルデータ('02','03','01','01',0). テーブルデータ('03','01','01','01',500). '(大分類=01and予算>50) and (大分類=02and予算<2000)の部署IDを取得したい'(_部署ID) :- findsetof([_部署ID,_大分類],( テーブルデータ(_部署ID,_大分類,_,_,_)), L), findall([_部署ID,_大分類,_予算計],( append(_,[[_部署ID,_大分類]|_],L)), findsum(_予算,( テーブルデータ(_部署ID,_大分類,_,_,_予算)), _予算計)), _部署ID・大分類・予算計ならび), append(_,[[_部署ID,'01',_予算計_1]|_],_部署ID・大分類・予算計ならび), _予算計_1 > 50, append(_,[[_部署ID,'02',_予算計_2]|_],_部署ID・大分類・予算計ならび), _予算計_2 < 2000. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/873 # # ・DBバージョン # MySQL5.0.77 # # id|_regDate_| # --+----------+ # 1 |2010-10-10| # 2 |2010-10-10| # 3 |2010-10-10| # 4 |2010-10-11| # 5 |2010-10-11| # 6 |2010-10-11| # 7 |2010-10-11| # 8 |2010-10-12| # 9 |2010-10-12| # 10|2010-10-12| # 11|2010-10-12| # # ・欲しい結果 # 何件レコードがあったかを日別に出力したい。 # # 例として # _regDate__|件数 # ----------+- # 2010-10-10|3 # 2010-10-11|4 # 2010-10-12|4 # # こうなってるとうれしいです。 # # ・説明 # 自前でクリックカウンターを作っております。 # ほかにカラムとしてユーザーエージェントやリモートホストのアドレスを設置してありまして # 日別に集計して見れるようにしたいと思ったのですが、PHPでループを書いて出力するより # SQLの問い合わせ段階で、上記のように整形できないかなと思いました。 # # よろしくお願いいたします。 # # 何件レコードがあったかを日別に出力する :- write('-- 日付 --|件数\n'), findsetof(_日付,テーブル(_id,_日付),L), append(_,[_日付|R],L), count(テーブル(_id,_日付),_件数), write_formatted('%t|%t\n',[_日付,_件数]), R = []. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/872 # # ・DBバージョン # MySQL5.0.77 # # id | code | name # --+-----+------ # 1 | 10  | aaa # 2 | 20  | bbb # 3 | 20  | ccc # 4 | 30  | ddd # 5 | 30  | eee # 6 | 30  | fff # 7 | 40  | ggg # 8 | 40  | hhh # # ・欲しい結果 # (code)グループ単位でn件を取得する # # ・説明 # code毎に抽出する行数の上限を指定したいです # postgresでは # http://ime.nu/blogs.wankuma.com/kacchan6/archive/2007/06/07/79946.aspx # oracleでは # http://ime.nu/www.ne.jp/asahi/hishidama/home/tech/oracle/rownum.html#TopN_partition_by # のようなことをmysqlで書きたいです # よろしくお願いします # '抽出する行数の上限'('10',2). '抽出する行数の上限'('20',2). '抽出する行数の上限'('30',2). '抽出する行数の上限'('40',1). '抽出する行数の上限'('50',2). '抽出する行数の上限'('60',1). '(code)グループ単位でn件を取得する'([_id,_code,_name]) :- findasetof(_code,テーブル(_,_code,_),L1), append(_,[_code|R],L1), findall([_id,_code,_name],テーブル(_id,_code,_name),L2), '抽出する行数の上限'(_code,_行数の上限), 行数の上限以内に丸める(L2,_行数の上限,L3), append(_,[[_id,_code,_name]|_],L3). 行数の上限以内に丸める(L2,_行数の上限,L) :- length(L,_行数の上限), append(L,_,L2),!. 行数の上限以内に丸める(L,_行数の上限,L). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/846 # # ・DBMS名とバージョン #  Microsoft Access2000 # # ・テーブルデータ # 【ITEM_COUNT】 # item_id | year | month | count # --------------------------- # 00001  | 2010 |   1 |  150 # 00001  | 2010 |   1 |  400 # 00001  | 2010 |   2 |   20 #   (中略) # 00001  | 2010 |  11 |  120 # 00001  | 2010 |  11 |   50 # 00001  | 2010 |  11 |  200 # 00001  | 2010 |  12 |   30 # 00001  | 2011 |   1 |  500 # 00001  | 2011 |   1 |  100 # 00002  | 2010 |   1 |   10 # 00002  | 2010 |   2 |   30 # 00002  | 2010 |   2 |  100 #   (後略) # ※同じid, year, monthのデータが複数存在します。 # # # ・欲しい結果 # item_id | 1月 | 2月 | … | 11月 | 12月 | 13月 # -------------------------------------------- # 00001  | 550 |  20 | … | 370 |  30 | 610 # 00002  |  10 | 130 | … | (後略) # # ※2010/1〜2011/1の13ヶ月間を1月〜13月として(2011/1を13月として)それぞれ集計を求めたい # # # ・説明 # 現状は、 # ------------------------------------ # SELECT #  year, item_id # FROM #  ITEM_COUNT # WHERE #  year=2010 # GROUP BY #  item_id, year # PIVOT #  Format(month,"#0月") In ("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"); # ------------------------------------ # 上のクエリを「集計1」、WHERE句を"year=2011"に変更したものを「集計2」とし、 # 次のクエリで結果を求めています。 # ------------------------------------ # SELECT #  集計1.item_id, 集計1.[1月], 集計1.[2月], … , 集計1.[12月],集計2.[1月] AS 13月 # FROM #  集計1 LEFT JOIN 集計2 ON 集計1.[item_id] = 集計2.[item_id] # ------------------------------------ # # しかしこれだと2011/1にのみデータがあるitem_idが集計から外れてしまいます。 # これを回避するにはどのように直したら良いでしょうか。 # # 年度を俣いで月合計を表示する :- findsetof([_item_id],( 'ITEM_COUNT'(_item_id,_year,_month,_count)), L1), findall([_item_id,_合計回数ならび],( append(_,[_item_id|_],L1), '2010年集計'(_2010年counts), '2011年集計'(_2011年counts), append(_2010年counts,_2011年counts,_合計回数ならび)), _集計ならび), 見出し表示, append(_,[[_itemp_id,_合計回数ならび]|R],_集計ならび), write_formatted(' %3d | %3d | %3d | %3d | %3d | %3d | %3d | %3d | %3d | %3d | %3d | %3d | %3d\n',_合計回数ならび), R = []. 見出し表示 :- append(_,[_月|R],['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']), write_formatted(' %3s |',[_月]), R = [], write(' 13月\n'),!. '2010年集計'(_item_id,2010,_month,_合計回数) :- for(1,_month,12), findsum(_count,'ITEM_COUNT'(_item_id,2000,_month,_count),_合計回数). '2011年集計'(_item_id,2011,_month,_合計回数) :- findsum(_count,'ITEM_COUNT'(_item_id,2011,1,_count),_合計回数). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/815 # # こんなレコードが格納されているとします。 # ID,NO # 100,1 # 102,2 # 101,3 # 200,1 # 201,2 # 202,3 # この場合、IDを100番台、200番台でグルーピングして、各グループ毎にNO順にSELECTで出力しようとした場合、どのような条件にすればよいでしょうか? # IDはこの例では3桁ですが、実際には6桁程あり、出来ればWHERE句で数字を入れて指定するような事はせずに並び替えが出来ると嬉しいです。 # 要は、レコードが増えてグループが増えたりしても、条件を変えずに並び替えが出来るようなものが良いのですが、可能でしょうか? # 宜しくご教示願います。 # # 'IDを100番台、200番台でグルーピングして、各グループ毎にNO順に出力する' :- findsetof(_ID,( テーブル(_ID,_NO), _ID_1 is (_ID // 100) + 1), _IDグループならび), findall(LL1,( append(_,[_ID_1|_],_IDグループならび), findall([_NO,_ID],( テーブル(_ID,_NO), _ID_1 is (_ID // 100) + 1), LL1)), LL2), 各グループ毎にNO順に出力する(LL2). 各グループ毎にNO順に出力する(LL) :- append(_,[L1|R1],LL), 整列(L1,L2), append(_,[[_NO,_ID]|R2],L2), write_formatted('%t,%t\n',[_ID,_NO]), R2 = [], R1 = [],!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1294061094/666 # # [1] 授業単元: # [2] 問題文: http://ime.nu/ux.getuploader.com/sanada1678/download/17/%E3%82%B3%E3%83%94%E3%83%BC+%EF%BD%9E+%E8%AA%B2%E9%A1%8C.csv # # ある駐車場が昼間20分100円の料金で駐車場を貸しています。 # 左のデータは入出庫のデータです。 # 駐車時間の長さの分類はおもに # 20分,40分,1時間,2時間,6時間,12時間,24時間以上 # です。これをもとに次の問題を解決せよ。 # # 毎時00分時点での(つまり1時間ごとの) # 駐車している駐車台数を自動計算するように表計算のプログラムを作成したい。 # # 1.1時間の間(たとえばその日の13時から14時)に入場してきた車の台数 #   その時間内に清算して出場して行った台数を自動計算するように表計算の #   プログラムを作成せよ。その結果として、00分時点での駐車台数が自動計算できる #   ようにプログラムを作成せよ。 # # 2.一定期間内(例えば1日や一週間と特定して)での #   駐車時間の長さで分類した台数 #   たとえば 30分以内,1H,2H,6H,12H,24H以上 #   が自動計算できるようにプログラムを作成せよ。 # # 3.とりあえず最初に駐車していた台数を0台として表を作成せよ。 #   それが出来たら最初に駐車していた台数を任意に設定することで #   その後の駐車している台数を自動計算できるように表を作成せよ。 # # 11月、12月などのデータを入力しても瞬時に計算できるようにしておく。 # 夜間の駐車料金などもデータから推測せよ。 # # 2010/10/31 20:38,2010/10/31 23:24,,300,300,,,,,,,,, # 2010/10/31 10:47,2010/10/31 22:12,,600,600,,,,,,,,, # 2010/10/31 12:25,2010/10/31 22:06,,600,600,,,,,,,,, # 2010/10/31 19:13,2010/10/31 21:52,,500,500,,,,,,,,, # 2010/10/31 18:49,2010/10/31 21:50,,600,600,,,,,,,,, # 2010/10/31 15:30,2010/10/31 21:45,,600,600,,,,,,,,, # 2010/10/31 10:06,2010/10/31 21:37,,600,600,,,,,,,,, # 2010/10/30 21:57,2010/10/31 21:32,,600,600,,,,,,,,, # 2010/10/31 13:02,2010/10/31 21:29,,600,600,,,,,,,,, # 2010/10/31 20:25,2010/10/31 21:16,,100,100,,,,,,,,, # 2010/10/30 21:19,2010/10/31 21:02,,600,600,,,20,,,,,, # 2010/10/31 9:43,2010/10/31 20:53,,600,600,,,,,,,,, # 2010/10/31 17:45,2010/10/31 20:43,,600,600,,,,,,,,, # 2010/10/31 18:38,2010/10/31 20:38,,600,600,,,00,,,,,, # 2010/10/29 6:53,2010/10/31 20:23,,1800,1800,,,,,,,,, # 2010/10/31 8:04,2010/10/31 19:53,,600,600,,,,,,,,, # 2010/10/31 5:32,2010/10/31 19:25,,600,600,,,,,,,,, # 2010/10/31 12:19,2010/10/31 19:15,,600,600,,,,,,,,, # 2010/10/31 5:53,2010/10/31 19:09,,600,600,,,00,,,,,, /* 'ある駐車場が昼間20分100円の料金で駐車場を貸しています。'. */ '左のデータは入出庫のデータです。'(_入出庫データファイル,_入出庫データならび) :- get_split_lines(_入出庫データファイル,[','],_入出庫データならび). /* '駐車時間の長さの分類はおもに20分,40分,1時間,2時間,6時間,12時間,24時間以上です。'(_駐車開始時刻,_駐車終了時刻,_駐車時間) :- 駐車時間は同一日である(_駐車開始時刻,_駐車終了時刻). '駐車時間の長さの分類はおもに20分,40分,1時間,2時間,6時間,12時間,24時間以上です。'(_駐車開始時刻,_駐車終了時刻,_駐車時間) :- \+(駐車時間は同一日である(_駐車開始時刻,_駐車終了時刻)). */ '毎時00分時点での(つまり1時間ごとの)駐車している駐車台数を自動計算する'(_毎時00分時点での駐車している駐車台数ならび) :- '左のデータは入出庫のデータです。'(_入出庫データファイル,_入出庫データならび), '毎時00分時点での(つまり1時間ごとの)駐車している駐車台数を自動計算するように表計算のプログラムを作成したい。'(_入出庫データならび,_毎時00分時点での駐車している駐車台数ならび). '毎時00分時点での(つまり1時間ごとの)駐車している駐車台数を自動計算する'(LL,LL2) :- findsetof([_年,_月,_日,_時],( append(_,[L|R1],LL), 発生した年・月・日・時(L,_年,_月,_日,_時)), LL1), findall([_年,_月,_日,_時,_駐車台数],( append(_,[[_年,_月,_日,_時]|_],LL1), '毎時00分時点での(つまり1時間ごとの)駐車している駐車台数'(LL,_年,_月,_日,_時,_駐車台数)), LL2). 発生した年・月・日・時([_時刻|_],_年,_月,_日,_時) :- split(_時刻,[' ','/',':'],[_年,_月,_日,_時|_]). 発生した年・月・日・時([_,_時刻|_],_年,_月,_日,_時) :- split(_時刻,[' ','/',':'],[_年,_月,_日,_時|_]). '毎時00分時点での(つまり1時間ごとの)駐車している駐車台数'(LL,_年,_月,_日,_時,_駐車台数) :- count(( member([A,B|_],LL), split(A,['/',' ',':'],LA), split(B,['/',' ',':'],LB), LA @=< [_年,_月,_日,_時,0], LB @>= [_年,_月,_日,_時,0]), _駐車台数),!. '1時間の間(たとえばその日の13時から14時)に入場してきた車の台数その時間内に清算して出場して行った台数を自動計算する'(LL,_年,_月,_日,_時,_入場車数,_出場車数) :- count(( member([A|_],LL), split(A,['/',' ',':'],LA), LA @>= [_年,_月,_日,_時,0], LA @=< [_年,_月,_日,_時,59]), _入場車数), count(( member([_,A|_],LL), split(A,['/',' ',':'],LA), LA @>= [_年,_月,_日,_時,0], LA @=< [_年,_月,_日,_時,59]), _出場車数),!. '一定期間内(例えば1日や一週間と特定して)での駐車時間の長さで分類した台数たとえば30分以内,1H,2H,6H,12H,24H以上を自動計算する'(LL,_時刻下限,_時刻上限,_30分以内,_1H,_2H,_6H,_12H,_24H,_24H以上) :- '一定期間内(例えば1日や一週間と特定して)での駐車時間の長さで分類した台数たとえば30分以内,1H,2H,6H,12H,24H以上を自動計算する'(LL,_時刻下限,_時刻上限,0,0,0,0,0,0,0,_30分以内,_1H,_2H,_6H,_12H,_24H,_24H以上). '一定期間内(例えば1日や一週間と特定して)での駐車時間の長さで分類した台数たとえば30分以内,1H,2H,6H,12H,24H以上を自動計算する'([],_時刻下限,_時刻上限,_30分以内,_1H,_2H,_6H,_12H,_24H,_24H以上,_30分以内,_1H,_2H,_6H,_12H,_24H,_24H以上) :- !. '一定期間内(例えば1日や一週間と特定して)での駐車時間の長さで分類した台数たとえば30分以内,1H,2H,6H,12H,24H以上を自動計算する'([[_入場時刻,_出場時刻|_]|R],_時刻下限,_時刻上限,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1,_30分以内,_1H,_2H,_6H,_12H,_24H,_24H以上) :- split(_入場時刻,[' ','/',':'],[_年_1,_月_1,_日_1,_時_1,_分_1]), split(_出場時刻,[' ','/',':'],[_年_2,_月_2,_日_2,_時_2,_分_2]), [_年_1,_月_1,_日_1,_時_1,_分_1] @>= _時刻下限, [_年_2,_月_2,_日_2,_時_2,_分_2] @=< _時刻上限, 入場時刻と出場時刻の時間差分単位(_入場時刻,_出場時刻,_時間差分単位), 時間差単位(_時間差分単位,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1,_30分以内_2,_2H_2,_2H_2,_6H_2,_22H_2,_24H_2,_24H以上_2), '一定期間内(例えば1日や一週間と特定して)での駐車時間の長さで分類した台数たとえば30分以内,1H,2H,6H,12H,24H以上を自動計算する'(R,_時刻下限,_時刻上限,_30分以内_2,_1H_2,_2H_2,_6H_2,_12H_2,_24H_2,_24H以上_2,_30分以内,_1H,_2H,_6H,_12H,_24H,_24H以上). '一定期間内(例えば1日や一週間と特定して)での駐車時間の長さで分類した台数たとえば30分以内,1H,2H,6H,12H,24H以上を自動計算する'([_|R],_時刻下限,_時刻上限,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1,_30分以内,_1H,_2H,_6H,_12H,_24H,_24H以上) :- '一定期間内(例えば1日や一週間と特定して)での駐車時間の長さで分類した台数たとえば30分以内,1H,2H,6H,12H,24H以上を自動計算する'(R,_時刻下限,_時刻上限,_30分以内_1,_1H_1,_1H_1,_6H_1,_12H_1,_14H_1,_14H以上_1,_30分以内,_1H,_1H,_6H,_12H,_14H,_14H以上). 時間差単位(_分,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1,_30分以内_2,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1) :- _分 =< 30, _30分以内_2 is _30分以内_1 + 1,!. 時間差単位(_分,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1,_30分以内_1,_1H_2,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1) :- _分 >= 30,_分 < 60, _1H_2 is _1H_1 + 1,!. 時間差単位(_分,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1,_30分以内_1,_1H_1,_2H_2,_6H_1,_12H_1,_24H_1,_24H以上_1) :- _分 >= 60,_分 < 120, _2H_2 is _2H_1 + 1,!. 時間差単位(_分,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1,_30分以内_1,_1H_1,_2H_1,_6H_2,_12H_1,_24H_1,_24H以上_1) :- _分 >= 120,_分 < 360, _6H_2 is _6H_1 + 1,!. 時間差単位(_分,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_2,_24H_1,_24H以上_1) :- _分 >= 360,_分 < 720, _12H_2 is _12H_1 + 1,!. 時間差単位(_分,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_2,_24H以上_1) :- _分 >= 720,_分 < 1440, _24H_2 is _24H_1 + 1,!. 時間差単位(_分,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_1,_30分以内_1,_1H_1,_2H_1,_6H_1,_12H_1,_24H_1,_24H以上_2) :- _分 >= 1440, _24H以上_2 is _24H以上_1 + 1,!. 'とりあえず最初に駐車していた台数を0台として表を作成せよ。それが出来たら最初に駐車していた台数を任意に設定することでその後の駐車している台数を自動計算できるように表を作成せよ。'. '11月、12月などのデータを入力しても瞬時に計算できるようにしておく。夜間の駐車料金などもデータから推測せよ。'. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 入場時刻と出場時刻の時間差分単位(_入場時刻,_出場時刻,_時間差分単位) :- atom(_入場時刻), atom(_出場時刻), split(_入場時刻,['/',' ',':'],[_年_1,_月_1,_日_1,_時_1,_分_1]), split(_出場時刻,['/',' ',':'],[_年_2,_月_2,_日_2,_時_2,_分_2]), 出場時刻と入場時刻の時間差分単位([_年_1,_月_1,_日_1,_時_1,_分_1],[_年_2,_月_2,_日_2,_時_2,_分_2],_時間差分単位). 入場時刻と出場時刻の時間差分単位([_年,_月,_日,_時,_分_1],[_年,_月,_日,_時,_分_2],_時間差分単位) :- _時間差分単位 is _分2 - _分1,!. 入場時刻と出場時刻の時間差分単位([_年,_月,_日,_時_1,_分_1],[_年,_月,_日,_時_2,_分_2],_時間差分単位) :- _時間差分単位 is (60 * _時_2 + _分_2) - (60 * _時_1 + _分1),!. 入場時刻と出場時刻の時間差分単位([_年,_月,_日_1,_時_1,_分_1],[_年,_月,_日_2,_時_2,_分_2],_時間差分単位) :- _時間差分単位 is (1440 * _日_2 + 60 * _時_2 + _分_2) - (1440 * _日_1 + 60 * _時_1 + _分1),!. 入場時刻と出場時刻の時間差分単位([_年,_月_1,_日_1,_時_1,_分_1],[_年,_月_2,_日_2,_時_2,_分_2],_時間差分単位) :- _月_2_1 is _月_2 - 1, findsum(_月日数,( for(_月_1,_月,_月_2_1), 月日数(_年_1,_月,_月日数)), _月日数合計の一), _月日数合計 is truncate(_月日数合計の一), _時間差分単位 is (1440 * _月日数合計 + 1440 * _日_2 + 60 * _時_2 + _分_2) - (1440 * _日_1 + 60 * _時_1 + _分_1),!. 入場時刻と出場時刻の時間差分単位([_年_1,_月_1,_日_1,_時_1,_分_1],[_年_2,_月_2,_日_2,_時_2,_分_2],_時間差分単位) :- _年_2_1 is _年_2 - 1, findsum(_年日数,( for(_年_1,_年,_年_2_1), 年日数(_年,_年日数)), _年日数合計の一), _年日数合計 is truncate(_年日数合計の一), _月_1_1 is _月_1 - 1, findsum(_月日数,( for(0,_月,_月_1_1), 月日数(_年_1,_月,_月日数)), _月日数合計の一), _月日数合計_1 is truncate(_月日数合計の一), _月_2_1 is _月_2 - 1, findsum(_月日数,( for(0,_月,_月_2_1), 月日数(_年_2,_月,_月日数)), _月日数合計の二), _月日数合計_2 is truncate(_月日数合計の二), _時間差分単位 is (1440 * _年日数の合計 + 1440 * _月日数合計_2 + 1440 * _日_2 + 60 * _時_2 + _分_2) - (1440 * _月日数合計_1 + 1440 * _日_1 + 60 * _時_1 + _分_1),!. 年日数(_年,366) :- うるう年(_年),!. 年日数(_年,365). 月日数(_年,2,29) :- うるう年(_年),!. 月日数(_年,2,29) :- \+(うるう年(_年)),!. 月日数(_年,_月,31) :- append(_,[_月|_],[1,3,5,7,8,10,12]),!. 月日数(_年,_月,30) :- append(_,[_月|_],[4,6,9,11]),!. 月日数(_,0,0). うるう年(_年) :- 0 is _年 mod 400,!. うるう年(_年) :- 0 is _年 mod 100,!, fail . うるう年(_年) :- 0 is _年 mod 4,!. うるう年(_年) :- \+(0 is _年 mod 4), fail. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1268979408/332 # # ●環境 # vb.net # # ●したいこと # 3文字以上の繰り返し表現を抽出 # # ●サンプル # 例文1)死にたい死にたい死にたい死にたい死にたい # 結果1)死にたい # # ●したいこと # 2箇所以上出現する3文字以上の文字列 # # 例文2)筋肉バスターと阿修羅バスター # 結果2)バスター # # # ってのを正規表現でやるのは無理でしょうか・・・ # '重複しない3文字以上の繰り返し表現を抽出'(_文字列,_重複しない3文字以上の繰り返し表現ならび) :- findsetof(_3文字以上の繰り返し表現,( '3文字以上の繰り返し表現を抽出'(_文字列,_3文字以上の繰り返し表現), _重複しない3文字以上の繰り返し表現ならび). '3文字以上の繰り返し表現を抽出'(_文字列,_3文字以上の繰り返し表現) :- sub_atom(_文字列,_開始点,_長さ,_残り長さ,[_3文字以上の繰り返し表現|R]), _長さ >= 3, _開始点2 is _開始点 + _長さ, sub_atom(_文字列,_開始点2,_長さ,_残り長さ2,_3文字以上の繰り返し表現). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/753 # # ../test/read.cgi/db/1274791771/4のような状況で、 # よくある質問1 # # (問) # ID | DATE     | DATA # --+----------+----- # 1 | 2007-11-11 | aaa # 2 | 2007-11-11 | bbb # 1 | 2007-11-10 | ccc # 3 | 2007-11-12 | ddd # 3 | 2007-11-11 | eee # 4 | 2007-11-10 | fff # 1 | 2007-11-12 | ggg # # # 各IDごとにランダムで2件抽出して、そのDATEを # 現在の日時に更新するにはどうすればよいでしょうか? # 各IDごとにランダムで2件抽出して、そのDATEを現在の日時に更新する :- findsetof(_ID,'TableName'(_ID,_DATE,_DATA),_IDならび), append(_,[_ID|R],_IDならび), findall([_ID,_DATE,_DATA],( 'TableName'(_ID,_DATE,_DATA)), L1), length(L1,_要素数), ランダムに2件抽出して(_要素数,L1,L2), 現在の日時に更新する(L2), R = []. ランダムに2件抽出して(0,[],[]) :- !. ランダムに2件抽出して(1,LL,LL) :- !. ランダムに2件抽出して(_要素数,L1,[_1,_2]) :- Nth1 is (random mod _要素数) + 1, list_nth(Nth1,L1,_1), repeat, Nth2 is (random mod _要素数) + 1, \+(Nth1 = Nth2), list_nth(Nth2,L1,_2),!. 現在の日時に更新する([[_ID,_DATE,_DATA]|R1]) :- 現在の日時(_現在の日時), findall([_ID,_DATE2,_DATA2], retract('TableName'(_ID,_DATE2,_DATA2)), L1), 現在の日時に更新する(_現在の日時,[[_ID,_DATE,_DATA]|R1],L1). 現在の日時に更新する(_現在の日時,[],[]) :- !. 現在の日時に更新する(_現在の日時,[],L) :- append(_,[[_ID,_DATE,_DATA]|R],L), assertz('TableName'(_ID,_DATE,_DATA)), R = [],!. 現在の日時に更新する(_現在の日時,[[_ID,_DATE,_DATA]|R1],[[_ID,_DATE,_DATA]|R2]) :- assertz('TableName'(_ID,_現在の日時,_DATA)), 現在の日時に更新する(_現在の日時,R1,R2),!. 現在の日時に更新する(_現在の日時,[[_ID,_DATE,_DATA]|R1],[[_ID,_DATE2,_DATA1]|R2]) :- assertz('TableName'(_ID,_DATE2,_DATA2)), 現在の日時に更新する(_現在の日時,[[_ID,_DATE,_DATA]|R1],R2),!. % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/471 # # 【質問テンプレ】 # ・DBMS名とバージョン: SQLite 3 # ・テーブルデータ:長いため下記に記載 # ・欲しい結果:RSSリーダ(brief)のデータ(*.sqlite)から特定の記事データを削除したいです。 # ・説明:長いため下記に記載 # # ●テーブルデータ # ======================================================================================================================= # ■entries #  | id | feedID | primaryHash | secondaryHash | providerID | entryURL | date | read | updated | starred | deleted | bookmarkID | # ----------------------------------------------------------------------------------------------------------------------- # ■entries_text #  | title | content | authors | tags | # ----------------------------------------------------------------------------------------------------------------------- # ■entries_text_content #  | docid | c0title | c1content | c2authors | c3tags | # ----------------------------------------------------------------------------------------------------------------------- # ■sqlite_sequence #  | name | seq | # ======================================================================================================================= # # 1.【entries】テーブルの[deleted]フィールドが「 2 」の場合に、そのレコードを削除。 # # 2.同時に、【entries_text_content】テーブルの[docid]フィールドが、1.で削除した #   [id]フィールドと同じ値のレコードも削除。 # # 3.更に同時に、【entries_textテーブル】から、1.で削除した[idフィールド]の値(数字)と #   同じレコード番号のレコードを削除。 ※idフィールドがない為 # # 4.その後、下記のフィールドの値を、1・2・3〜とリナンバリングしたい。 #   【entries】テーブルの[id]フィールド #   【entries_text_content】テーブルの[docid]フィールド # # 5.そして、1.2.3.の三つのテーブルのレコード数がどれも同じ数だけあるか確認。 # # 6.最後に、【sqlite_sequence】テーブルの[seq]フィールドに5.で確認したレコード数を #   設定したい。 # # お手数ですが、以上よろしくお願いします。 # # '1.【entries】テーブルの[deleted]フィールドが「 2 」の場合に、そのレコードを削除' :- findsetof(_id,( entries(_id,_feedID,_primaryHash,_secondaryHash,_providerID,_entryURL,_date,_read,_updated,_starred,_deleted,_bookmarkID)), _deleted = '2'), L1), retract_all(entries(_id,_feedID,_primaryHash,_secondaryHash,_providerID,_entryURL,_date,_read,_updated,_starred,'2',_bookmarkID)), findsetof(_docid,( member(_id,L1), entries_text_contents(_docid,_c0title,_c1content,_c2authors,_c3tags)), _docid = _id), L2), '2.同時に、【entries_text_content】テーブルの[docid]フィールドが、1.で削除した[id]フィールドと同じ値のレコードも削除。'(L2), '3.更に同時に、【entries_textテーブル】から、1.で削除した[idフィールド]の値(数字)と同じレコード番号のレコードを削除。'(L1),!. '2.同時に、【entries_text_content】テーブルの[docid]フィールドが、1.で削除した[id]フィールドと同じ値のレコードも削除。'(L2) :- member(_docid,L2), retract_all(entries_text_contents(_docid,_c0title,_c1content,_c2authors,_c3tags)),!. '3.更に同時に、【entries_textテーブル】から、1.で削除した[idフィールド]の値(数字)と同じレコード番号のレコードを削除。'(L1) :- append(_,[Nth|R],L1), 節の定義位置指定による節の削除(L2,Nth), R = [],!. '3.更に同時に、【entries_textテーブル】から、1.で削除した[idフィールド]の値(数字)と同じレコード番号のレコードを削除。'(_). 節の定義位置指定による節の削除(L2,Nth) :- findall((Head :- Body),( clause(entries_text(_title,_content,_authors,_tags),Head,Body)), L2), list_nth(Nth,L2,P), retract(P),!. '4.その後、下記のフィールドの値を、1・2・3〜とリナンバリングしたい。 【entries】テーブルの[id]フィールド 【entries_text_content】テーブルの[docid]フィールド' :- findall(entries(_id,_feedID,_primaryHash,_secondaryHash,_providerID,_entryURL,_date,_read,_updated,_starred,_deleted,_bookmarkID),( retract(entries(_id,_feedID,_primaryHash,_secondaryHash,_providerID,_entryURL,_date,_read,_updated,_starred,_deleted,_bookmarkID))), L1), append(L01,[entries(_,_feedID,_primaryHash,_secondaryHash,_providerID,_entryURL,_date,_read,_updated,_starred,_deleted,_bookmarkID)|R1],L1), length([_|L0],Nth1), assertz(entries(Nth1,_feedID,_primaryHash,_secondaryHash,_providerID,_entryURL,_date,_read,_updated,_starred,_deleted,_bookmarkID)), R1 = [], findall(entries_text_contents(_,_c0title,_c1content,_c2authors,_c3tags),( retract(entries_text_contents(_docid,_c0title,_c1content,_c2authors,_c3tags))), L2), append(L02,[entries_text_contents(_,_c0title,_c1content,_c2authors,_c3tags)|R2],L2), length([_|L02],Nth2), assertz(entries_text_contents(Nth2,_c0title,_c1content,_c2authors,_c3tags)), R2 = [],!. '5.そして、1.2.3.の三つのテーブルのレコード数がどれも同じ数だけあるか確認。'(Count) :- count(entries(_id,_feedID,_primaryHash,_secondaryHash,_providerID,_entryURL,_date,_read,_updated,_starred,_deleted,_bookmarkID),Count), count(entries_text_contents(_docid,_c0title,_c1content,_c2authors,_c3tags),Count), count(entries_text(_title,_content,_authors,_tags),Count). '6.最後に、【sqlite_sequence】テーブルの[seq]フィールドに5.で確認したレコード数を設定したい。'(Count) :- retract(sqlite_sequence(_name,_seq)), assertz(sqlite_sequence(_name,Count),!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1291471791/670 # # [1]授業単元:プログラミング演習 # [2]問題文 # 料理のデータベースを作成し、複数のデータの中からカロリーが最大と最小の料理の全データを出力するプログラムを作成せよ # # [3] # [3.1]Windows # [3.2]Visual Studio 2010 # [3.3]C # [4]12/20 # [5]各料理のデータは「番号、名前、カロリー」 #   料理とカロリーの値は適当でも可(ラーメン 10kcalとか) # # よろしくお願いします # # 食品のカロリー('カップ麺(ラーメン)',448). 食品のカロリー('クロワッサン',448). 食品のカロリー('インスタントラーメン',445). 食品のカロリー('カップ焼きそば',436). 食品のカロリー('デニッシュパン',396). 食品のカロリー('焼きふ',385). 食品のカロリー('コーンフレーク',381). 食品のカロリー('オートミール',380). 食品のカロリー('スパゲティ(乾麺)',378). 食品のカロリー('マカロニ(乾麺)',378). 食品のカロリー('ビーフン(乾麺)',377). 食品のカロリー('パン粉',373). 食品のカロリー('白玉粉',369). 食品のカロリー('小麦粉(薄力粉)',368). 食品のカロリー('小麦粉(中力粉)',368). 食品のカロリー('小麦粉(強力粉)',366). 食品のカロリー('コーンフラワー',363). 食品のカロリー('コーンミール',363). 食品のカロリー('上新粉',362). 食品のカロリー('はと麦',360). 食品のカロリー('アマランサス',358). 食品のカロリー('そうめん(乾)',356). 食品のカロリー('コーングリッツ',355). 食品のカロリー('とうもろこし(玄穀)',350). 食品のカロリー('てんぷら粉',349). 食品のカロリー('大麦(押麦)',340). 食品のカロリー('ロールパン',316). 食品のカロリー('チョココルネ',308). 食品のカロリー('クリームパン',305). 食品のカロリー('しゅうまいの皮',295). 食品のカロリー('春巻の皮',295). 食品のカロリー('餃子の皮',291). 食品のカロリー('あんまん',281). 食品のカロリー('あんぱん',280). 食品のカロリー('フランスパン',279). 食品のカロリー('ぶどうパン',269). 食品のカロリー('ピザクラスト',268). 食品のカロリー('コッペパン',265). 食品のカロリー('食パン',264). 食品のカロリー('ライ麦パン',264). 食品のカロリー('ナン',262). 食品のカロリー('ホットケーキ',261). 食品のカロリー('肉まん',251). 食品のカロリー('もち',235). 食品のカロリー('イングリッシュマフィン',228). 食品のカロリー('中華めん(蒸し)',198). 食品のカロリー('おこわ(赤飯)',189). 食品のカロリー('ごはん(精白米)',168). 食品のカロリー('ごはん(七分つき米)',168). 食品のカロリー('ごはん(はいが精米)',167). 食品のカロリー('ごはん(玄米)',165). 食品のカロリー('中華めん(ゆで)',149). 食品のカロリー('そば(ゆで)',132). 食品のカロリー('うどん(ゆで)',105). 食品のカロリー('フライドポテト',388). 食品のカロリー('マッシュポテト(乾)',357). 食品のカロリー('タピオカ(乾)',351). 食品のカロリー('さつまいも',163). 食品のカロリー('くずきり(ゆで)',135). 食品のカロリー('やまといも',123). 食品のカロリー('じゃがいも',73). 食品のカロリー('ながいも',65). 食品のカロリー('さといも',59). 食品のカロリー('しらたき',6). 食品のカロリー('こんにゃく',5). 食品のカロリー('凍り豆腐(乾)',529). 食品のカロリー('フライビーンズ',472). 食品のカロリー('きな粉',437). 食品のカロリー('ひよこ豆フライ',419). 食品のカロリー('だいず(乾)',417). 食品のカロリー('油揚げ',386). 食品のカロリー('えんどう豆(塩豆)',364). 食品のカロリー('はるさめ(緑豆・乾)',345). 食品のカロリー('はるさめ(芋・乾)',342). 食品のカロリー('あずき(乾)',339). 食品のカロリー('金山寺みそ',256). 食品のカロリー('おたふく豆',251). 食品のカロリー('豆きんとん',249). 食品のカロリー('つぶしあん',244). 食品のカロリー('うずら豆',237). 食品のカロリー('ゆば(生)',231). 食品のカロリー('がんもどき',228). 食品のカロリー('納豆',200). 食品のカロリー('納豆(ひきわり)',194). 食品のカロリー('だいず(ゆで)',180). 食品のカロリー('ひよこ豆(ゆで)',171). 食品のカロリー('こしあん',155). 食品のカロリー('厚揚げ/生揚げ',150). 食品のカロリー('えんどう豆(ゆで)',148). 食品のカロリー('いんげん豆(ゆで)',143). 食品のカロリー('紅花いんげん(ゆで)',121). 食品のカロリー('おから',89). 食品のカロリー('豆腐(焼き)',88). 食品のカロリー('豆腐(木綿)',72). 食品のカロリー('豆腐(絹ごし)',56). 食品のカロリー('豆乳',46). 食品のカロリー('マカダミアナッツ',720). 食品のカロリー('松の実',690). 食品のカロリー('くるみ',674). 食品のカロリー('ピスタチオ',615). 食品のカロリー('アーモンド',606). 食品のカロリー('ごま',599). 食品のカロリー('バターピーナッツ',592). 食品のカロリー('らっかせい',585). 食品のカロリー('カシューナッツ',576). 食品のカロリー('くり(甘露煮)',238). 食品のカロリー('くり(中国ぐり)',225). 食品のカロリー('くり(日本ぐり)',167). 食品のカロリー('ぎんなん',166). 食品のカロリー('干ししいたけ(乾)',182). 食品のカロリー('きくらげ(乾)',167). 食品のカロリー('エリンギ',24). 食品のカロリー('まつたけ',23). 食品のカロリー('えのきたけ',22). 食品のカロリー('しいたけ',18). 食品のカロリー('しめじ',18). 食品のカロリー('まいたけ',16). 食品のカロリー('マッシュルーム',16). 食品のカロリー('なめこ',14). 食品のカロリー('マッシュルーム(缶)',14). 食品のカロリー('なめこ(缶)',9). 食品のカロリー('あんこうのきも',445). 食品のカロリー('たたみいわし',372). 食品のカロリー('いわし(油漬)',359). 食品のカロリー('かつおぶし',356). 食品のカロリー('まぐろ(脂身)',344). 食品のカロリー('ふかひれ',342). 食品のカロリー('しめさば',339). 食品のカロリー('いわし(みりん干)',332). 食品のカロリー('煮干し',332). 食品のカロリー('さんま',310). 食品のカロリー('うなぎ(かば焼)',293). 食品のカロリー('たら(でんぶ)',278). 食品のカロリー('ツナ缶(油漬)',267). 食品のカロリー('たちうお',266). 食品のカロリー('さんま(開き)',261). 食品のカロリー('ぶり',257). 食品のカロリー('めざし',257). 食品のカロリー('はまち(生)',256). 食品のカロリー('身欠きにしん',246). 食品のカロリー('いわし(焼き)',244). 食品のカロリー('たい(焼)',226). 食品のカロリー('あじ(干物)',220). 食品のカロリー('ぎんだら',220). 食品のカロリー('いわし(生)',217). 食品のカロリー('にしん',216). 食品のカロリー('さば',202). 食品のカロリー('塩さけ',199). 食品のカロリー('あなご',194). 食品のカロリー('たい(生)',194). 食品のカロリー('いわし(丸干)',193). 食品のカロリー('さば(水煮缶)',190). 食品のカロリー('あゆ(焼)',177). 食品のカロリー('さわら',177). 食品のカロリー('ししゃも',177). 食品のカロリー('むつ',173). 食品のカロリー('あじ(焼)',164). 食品のカロリー('かれい(子持ち)',162). 食品のカロリー('スモークサーモン',161). 食品のカロリー('きんめだい',160). 食品のカロリー('さけ(生)',154). 食品のカロリー('かます(焼)',145). 食品のカロリー('ほっけ(開き)',142). 食品のカロリー('かじき',141). 食品のカロリー('いさき',127). 食品のカロリー('にじます',127). 食品のカロリー('いかなご',125). 食品のカロリー('まぐろ(赤身)',125). 食品のカロリー('ひらめ',124). 食品のカロリー('すずき',123). 食品のカロリー('あじ(生)',121). 食品のカロリー('うなぎ(きも)',118). 食品のカロリー('かれい(干し)',117). 食品のカロリー('ほっけ(生)',115). 食品のカロリー('かつお',114). 食品のカロリー('しらす干し',113). 食品のカロリー('はたはた',113). 食品のカロリー('めばる',109). 食品のカロリー('かれい',95). 食品のカロリー('さより',95). 食品のカロリー('きす',85). 食品のカロリー('ふぐ',85). 食品のカロリー('かわはぎ',80). 食品のカロリー('たら(生)',79). 食品のカロリー('しらうお',77). 食品のカロリー('わかさぎ',77). 食品のカロリー('ツナ缶(水煮)',71). 食品のカロリー('たら(塩)',65). 食品のカロリー('あんこう',58). 食品のカロリー('するめ',334). 食品のカロリー('わかさぎの佃煮',317). 食品のカロリー('すじこ',282). 食品のカロリー('いかなごの佃煮',282). 食品のカロリー('いくら',272). 食品のカロリー('えびの佃煮',244). 食品のカロリー('かつお節の佃煮',237). 食品のカロリー('干しえび',232). 食品のカロリー('あさりの佃煮',225). 食品のカロリー('はまぐりの佃煮',219). 食品のカロリー('粒うに',183). 食品のカロリー('たらこ',170). 食品のカロリー('魚肉ソーセージ',161). 食品のカロリー('さつま揚げ',139). 食品のカロリー('めんたいこ',126). 食品のカロリー('ちくわ',121). 食品のカロリー('うに',120). 食品のカロリー('いか(焼)',117). 食品のカロリー('いかの塩辛',117). 食品のカロリー('つみれ',113). 食品のカロリー('たいらがい',100). 食品のカロリー('しゃこ',98). 食品のカロリー('車えび',97). 食品のカロリー('ほたて(貝柱)',97). 食品のカロリー('大正えび',95). 食品のカロリー('かまぼこ',95). 食品のカロリー('はんぺん',94). 食品のカロリー('伊勢えび',92). 食品のカロリー('桜えび',91). 食品のカロリー('かにかまぼこ',90). 食品のカロリー('数の子',89). 食品のカロリー('さざえ',89). 食品のカロリー('いか(生)',88). 食品のカロリー('甘えび',87). 食品のカロリー('ばいがい',87). 食品のカロリー('つぶがい',86). 食品のカロリー('とりがい',86). 食品のカロリー('ほたるいか',84). 食品のカロリー('芝えび',83). 食品のカロリー('毛がに',83). 食品のカロリー('ブラックタイガー',82). 食品のカロリー('みる貝',82). 食品のカロリー('たらばがに',80). 食品のカロリー('なると',80). 食品のカロリー('たこ',76). 食品のカロリー('あわび',73). 食品のカロリー('かに缶',73). 食品のカロリー('ほっき貝',73). 食品のカロリー('ほたて(ひも付)',72). 食品のカロリー('ずわいがに',69). 食品のカロリー('あみの塩辛',65). 食品のカロリー('あおやぎ',61). 食品のカロリー('かき',60). 食品のカロリー('しじみ',51). 食品のカロリー('はまぐり',38). 食品のカロリー('あさり',30). 食品のカロリー('ほや',30). 食品のカロリー('くらげ',22). 食品のカロリー('牛ばら肉(和牛)',517). 食品のカロリー('フォアグラ',510). 食品のカロリー('牛サーロイン(和牛)',498). 食品のカロリー('サラミ',497). 食品のカロリー('牛リブロース(和牛)',468). 食品のカロリー('牛肩ロース(和牛)',411). 食品のカロリー('ベーコン',405). 食品のカロリー('たまご(卵黄)',387). 食品のカロリー('豚ばら肉',386). 食品のカロリー('レバーペースト',378). 食品のカロリー('牛ばら肉(輸入)',371). 食品のカロリー('牛ランプ(和牛)',347). 食品のカロリー('ウインナー',321). 食品のカロリー('ビーフジャーキー',315). 食品のカロリー('牛サーロイン(輸入)',298). 食品のカロリー('フランクフルト',298). 食品のカロリー('牛肉(小腸)',287). 食品のカロリー('牛肩肉(和牛)',286). 食品のカロリー('牛たん(舌)',269). 食品のカロリー('牛リブロース(輸入)',263). 食品のカロリー('豚ロース',263). 食品のカロリー('豚肩ロース',253). 食品のカロリー('生ハム',247). 食品のカロリー('牛もも肉(和牛)',246). 食品のカロリー('牛肩ロース(輸入)',240). 食品のカロリー('牛ランプ(輸入)',234). 食品のカロリー('豚足',230). 食品のカロリー('牛ひき肉',224). 食品のカロリー('マトン',224). 食品のカロリー('牛ひれ肉(和牛)',223). 食品のカロリー('豚ひき肉',221). 食品のカロリー('豚たん(舌)',221). 食品のカロリー('ピータン',214). 食品のカロリー('鶏手羽肉',211). 食品のカロリー('ベーコン(ロース)',211). 食品のカロリー('鶏はつ(心臓)',207). 食品のカロリー('コンビーフ缶',203). 食品のカロリー('鶏もも肉(皮付)',200). 食品のカロリー('ハム(ロース)',196). 食品のカロリー('ローストビーフ',196). 食品のカロリー('鶏むね肉(皮付)',191). 食品のカロリー('ショルダーベーコン',186). 食品のカロリー('豚もも肉',183). 食品のカロリー('牛もも肉(輸入)',182). 食品のカロリー('うずら卵(水煮缶)',182). 食品のカロリー('牛肩肉(輸入)',180). 食品のカロリー('うずら卵(生)',179). 食品のカロリー('焼豚',172). 食品のカロリー('鶏ひき肉',166). 食品のカロリー('ポーチドエッグ',164). 食品のカロリー('牛大腸',162). 食品のカロリー('たまご(生)',151). 食品のカロリー('たまご(ゆで)',151). 食品のカロリー('牛はつ(心臓)',142). 食品のカロリー('牛ひれ肉(輸入)',133). 食品のカロリー('牛レバー(肝臓)',132). 食品のカロリー('豚レバー(肝臓)',128). 食品のカロリー('かも',128). 食品のカロリー('子牛ばら肉',122). 食品のカロリー('ハム(ボンレス)',118). 食品のカロリー('鶏もも肉(皮なし)',116). 食品のカロリー('豚ひれ肉',115). 食品のカロリー('鶏レバー(肝臓)',111). 食品のカロリー('鶏むね肉(皮なし)',108). 食品のカロリー('鶏ささみ',105). 食品のカロリー('鶏砂ぎも',94). 食品のカロリー('たまご豆腐',79). 食品のカロリー('牛ミノ(胃)',62). 食品のカロリー('鶏軟骨',54). 食品のカロリー('たまご(卵白)',50). 食品のカロリー('焼きのり',188). 食品のカロリー('味付けのり',179). 食品のカロリー('あおのり(乾)',150). 食品のカロリー('ひじき(乾)',139). 食品のカロリー('こんぶ(乾)',138). 食品のカロリー('カットわかめ(乾)',138). 食品のカロリー('あおさ(乾)',130). 食品のカロリー('とろろこんぶ',117). 食品のカロリー('わかめ(素干し)',117). 食品のカロリー('塩昆布',110). 食品のカロリー('こんぶつくだ煮',84). 食品のカロリー('のりのつくだ煮',77). 食品のカロリー('めかぶわかめ',11). 食品のカロリー('塩蔵わかめ(塩抜)',11). 食品のカロリー('もずく',4). 食品のカロリー('かんてん',3). 食品のカロリー('ところてん',2). 食品のカロリー('コーヒーミルク(粉/植物性)',568). 食品のカロリー('コーヒーミルク(粉/乳脂肪)',518). 食品のカロリー('パルメザンチーズ',475). 食品のカロリー('生クリーム(乳脂肪)',433). 食品のカロリー('ホイップクリーム(乳脂肪)',422). 食品のカロリー('ホイップクリーム(植物性)',402). 食品のカロリー('生クリーム(植物性)',392). 食品のカロリー('脱脂粉乳(粉)',359). 食品のカロリー('チーズ(クリーム)',346). 食品のカロリー('プロセスチーズ',339). 食品のカロリー('加糖練乳',331). 食品のカロリー('カマンベールチーズ',310). 食品のカロリー('コーヒーミルク(液/植物性)',248). 食品のカロリー('アイスクリーム(ラクトアイス・普通脂肪)',224). 食品のカロリー('乳酸菌飲料(殺菌乳製品)',217). 食品のカロリー('アイスクリーム(高脂肪)',212). 食品のカロリー('コーヒーミルク(液/乳脂肪)',211). 食品のカロリー('アイスクリーム(普通脂肪)',180). 食品のカロリー('アイスクリーム(アイスミルク)',167). 食品のカロリー('アイスクリーム(ソフトクリーム)',146). 食品のカロリー('シャーベット',127). 食品のカロリー('アイスクリーム(ラクトアイス・低脂肪)',108). 食品のカロリー('カッテージチーズ',105). 食品のカロリー('牛乳(特濃)',73). 食品のカロリー('乳酸菌飲料(乳製品)',71). 食品のカロリー('牛乳(普通)',67). 食品のカロリー('ヨーグルト(脱脂/加糖)',67). 食品のカロリー('ヨーグルト(飲料)',65). 食品のカロリー('ヨーグルト(全脂/無糖)',62). 食品のカロリー('コーヒー牛乳',56). 食品のカロリー('牛乳(低脂肪乳)',46). 食品のカロリー('フルーツ牛乳',46). 食品のカロリー('牛乳(脱脂乳)',33). 料理中の遺失カロリー比率(カレー,5) :- !. 料理中の遺失カロリー比率(_料理名,10) :- sub_atom(_料理名,_,3,_,スープ),!. 料理中の遺失カロリー比率(_,0). レシピ(カエルのバターとブドウ酒の煮込み,皮を剥いだカエルの足,6,900 g). レシピ(カエルのバターとブドウ酒の煮込み,辛口の白ブドウ酒,6,200 cc). レシピ(カエルのバターとブドウ酒の煮込み,小麦粉,6,3 g). レシピ(カエルのバターとブドウ酒の煮込み,塩,6,少々). レシピ(カエルのバターとブドウ酒の煮込み,パセリのみじん切り,6,2-3 枚). レシピ(カエルのバターとブドウ酒の煮込み,レモン,6,1 個). レシピ(すずきの白ブドウ酒入り蒸し焼き,'海すずき(1.1kg)',6,1 尾). レシピ(すずきの白ブドウ酒入り蒸し焼き,塩,6,少量). レシピ(すずきの白ブドウ酒入り蒸し焼き,辛口白ブドウ酒,6,400 cc). レシピ(すずきの白ブドウ酒入り蒸し焼き,バター,6,25 g). 作り方(カエルのバターとブドウ酒の煮込み,1,'マリネのためにブドウ酒を使ってカエルの足を浸す'). 作り方(カエルのバターとブドウ酒の煮込み,2,'バターを深底のフライパンに溶かす'). 作り方(カエルのバターとブドウ酒の煮込み,3,'マリネからカエルの足を取り出したおく'). 作り方(カエルのバターとブドウ酒の煮込み,4,'フライパンにブドウ酒をそそぎ、バターとよく混ぜ合わせ、足を加える'). 作り方(カエルのバターとブドウ酒の煮込み,5,'ブドウ酒が半量煮つまるまで、中火で煮る'). 作り方(カエルのバターとブドウ酒の煮込み,6,'小麦粉、塩少々、パセリ、水 30ccを混ぜ合わせる'). 作り方(カエルのバターとブドウ酒の煮込み,7,'フライパンに入れて混ぜ合わせる'). 作り方(カエルのバターとブドウ酒の煮込み,8,'中火でさらに15分火を通し続ける'). 作り方(カエルのバターとブドウ酒の煮込み,9,'供する前に、カエルの足にレモン汁をふりかけて、供する'). 作り方(すずきの白ブドウ酒入り蒸し焼き,1,'皮に傷をつけないように下ごしらえする。魚はきざみ目をつけて内側に塩をする。'). 作り方(すずきの白ブドウ酒入り蒸し焼き,2,'鍋にブドウ酒、バター、塩少量を入れて魚を入れ、蓋をして中火のオープンで約20分間魚がやわらかくなるまで蒸し焼きにする。'). 作り方(すずきの白ブドウ酒入り蒸し焼き,3,'魚を皿に盛り魚の背中に2~3つの切り目をつけ、上から濾した煮汁をかけてすぐ供する。'). 材料の姿(生姜,N,個,_数量のグラム単位) :- _数量のグラム単位 is N * 30. 材料の姿('たまねぎ(中)',N,個,_数量のグラム単位) :- _数量のグラム単位 is N * 250. 材料の姿(_,A,_,A,_). 料理のデータベースを作成し、複数のデータの中からカロリーが最大と最小の料理の全データを出力するプログラムを作成せよ :- findsetof(_料理名,レシピ(_料理名,_,_),_料理名ならび), append(_,[_料理名|_],_料理名ならび), findall([_カロリー,_料理名], 料理のカロリー(_料理名,_カロリー), _カロリー・料理名ならび), max(_カロリー・料理名ならび,[_カロリーが最大の料理のカロリー,_カロリーが最大の料理名]), min(_カロリー・料理名ならび,[_カロリーが最小の料理のカロリー,_カロリーが最小の料理名]), 料理の全データを出力する(_カロリーが最大の料理名,_カロリーが最大の料理のカロリー), 料理の全データを出力する(_カロリーが最小の料理名,_カロリーが最小の料理のカロリー),!. 料理のカロリー(_料理名,_カロリー) :- findsum(_カロリー,( レシピ(_料理名,_材料,_数量,_), 材料の姿(_材料,_数量,_,_数量グラム単位), 食品のカロリー(_材料,_100gあたりのカロリー), _カロリー is _100gあたりのカロリー * _数量グラム単位 / 100), _カロリー合計), 料理中の遺失カロリー比率(_料理名,_遺失カロリー比率), _カロリー is _カロリー合計 * (100-_遺失カロリー比率) / 100. 料理の全データを出力する(_料理名,_カロリー) :- findall([_材料,_数量グラム単位],レシピ(材料,_料理名,_材料,_数量,_),_材料ならび), findall(_作り方,作り方(_料理名,_,_作り方),_作り方ならび), write_formatted('料理名 %t\nカロリー量 %t\n',[_料理名,カロリー]), 材料の表示(_材料・数量ならび), 作り方の表示(_作り方ならび),!. 材料の表示(_材料・数量ならび) :- write('材料,数量\n'), append(_,[[_材料,_数量グラム単位]|R],_材料・数量ならび), write_formatted('%t,%t\n',_材料,_数量グラム単位]), R = [],!. 作り方の表示(_作り方ならび) :- write('\n作り方\n\n'), append(L0,[_作り方|R],_作り方ならび), length([_|L0],_手順番号), write_formatted('%t ... %t\n',[_手順番号,_作り方]), R = [],!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/730 # # ・DBMS名とバージョン #  MySQL 5.1 # ・テーブルデータ #  記録ID(通し番号)、ユーザID、日時、金額、購入品目ID # ・欲しい結果 #  購入品目ID、日時(最新の1件)、金額(〃)  //ただしユーザID=A # # ・説明 #  ユーザID=Aの、購入品目IDごとに、最新の日時と金額を表示させたいです。 #  (購入品目IDが1〜10まであったら、10行の結果が返ってくるような) #  どこに副問合せを使っていいか分からず詰まりました。どなたかお願いします。 # # 'ユーザID=Aの、購入品目IDごとに、最新の日時と金額を表示させたいです。' :- 'ユーザIDを指定して、購入品目IDごとに、最新の日時と金額を表示'('A'). 'ユーザIDを指定して、購入品目IDごとに、最新の日時と金額を表示'(_ユーザID) :- findsetof(_購入品目ID, テーブルデータ(_記録ID,_ユーザID,_日時,_金額,_購入品目ID), L1), append(_,[_購入品目ID|R],L1), findmax([_日時,_その日の合計金額], findsum(_金額,( テーブルデータ(_記録ID,_ユーザID,_日時,_金額,_購入品目ID)), _その日の合計金額), [_日時,_その日の合計金額]), write_formatted('%t,%t,%t\n',[_ユーザID,_日時,_その日の金額]), R = []. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/642 # # +---+------+----+ # | id|parent|name| # +---+------+----+ # | 1 | NULL |taro| # | 2 |  1 |jiro| # | 3 |  1 |sabu| # | 4 |  2 |siro| # | 5 | 3 |hana| # +---+------+----+ # # 上記のようなユーザーID(id)とその親情報(parent)のテーブルで、 # 指定したIDの子と孫の一覧を取得するにはどうすればいいですか? # 1の場合、jiro、sabu、siroを取得したいです。 # 子と孫の総数だけでもかまいません。 # # 親子(1,[],taro). 親子(2,1,jiro). 親子(3,1,sabu). 親子(4,2,siro). 親子(5,3,hana). 指定したIDの子と孫の取得(_指定したid,_子と孫ならび) :- findsetof(_id,親子(_id,_,_),L), append(_,[_指定したid|_],L), 孫ならびの取得(_指定したid,_孫ならび), 子ならびの取得(_指定したid,_子ならび), append(_子ならび,_孫ならび,_子と孫ならび). 孫ならびの取得(_id2,_孫ならび) :- findall(_name,( 親子(_id1,_id2,_), 親子(_id,_id1,_name)), _孫ならび),!. 子ならびの取得(_id2,_子ならび) :- findall(_name,親子(_id,_id2,_name),_子ならび),!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1289913298/83 # # ポーカーゲームを作るプログラムの課題を教えてください。 # [1] プログラムまとめ # [2] 課題1のストレート、フラッシュ、フルハウスをヒントを使って判定する関数を作る。 # # /* ヒント: この関数を使うと、 判定が簡単かも */ # void distrib(struct card h[], int dist[]){ # int i; # for(i = 0; i < 14; i++){ # dist[i] = 0;} # for(i = 0; i < 5; i++){ # dist[h[i].pips]++;}} # # int is_straight(struct card h[]){ # /* 課題1 */ # return 0;} # # int is_flush(struct card h[]){ # /* 課題1 */} # # int is_fullhouse(struct card h[]){ # /* 課題1 */ # return 0;} # # card h[] は手札のカード # h[].pips は手札のカードの番号 # h[].suit は手札のカードのマークのことです ポーカーの役(_手札ならび,フラッシュ) :- all(_手札ならび,[_,_共通マーク]), \+(ポーカーの役(_手札ならび,ストレート)),!. ポーカーの役(_手札ならび,ストレート) :- sort(_手札ならび,L), L = [Min|R], Max is Min + 4, findall(N,for(Min,N,Max),L), \+all(_手札ならび,[_,_共通マーク])),!. ポーカーの役(_手札ならび,フルハウス) :- findsetof(_番号,append(_,[[_番号,_]|_],_手札ならび),[_番号1,_番号2]), count(append(_,[[_番号1,_]|_],_手札ならび),Count1), Count1 >= 2, count(append(_,[[_番号2,_]|_],_手札ならび),Count2), Count2 >= 2,!. ポーカーの役(_手札ならび,フルハウス) :- sort(_手札ならび,L), フルハウス(L). フルハウス([[_A,_],[_A,_],[_B,_],[_B,_],[_B,_]]) :- \+(A = B),!. フルハウス([[_A,_],[_A,_],[_A,_],[_B,_],[_B,_]]) :- \+(A = B),!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/627 # # mysql 5.0 (windows 7)です # 下記のようなテーブルで # amountの合計の最も多いidを取得するsql文がわかりません… # # select id, sum(amount) as "total" from orders # group by id order by total desc limit 1; # # とすれば一応取得できたのですが、別の方法はないでしょうか # 初歩的な質問ですみません… # # +------+------+--------+ # | id | name | amount | # +------+------+--------+ # | 1 | C1 | 3 | # | 1 | C2 | 10 | # | 2 | C2 | 5 | # | 2 | C3 | 10 | # | 3 | C3 | 2 | # +------+------+--------+ # 'amountの合計の最も多いidを取得する'(_最もaumout合計が多いid) :- find_sum_max([_id,_値],orders(_id,_,_値),[_最もamount合計が多いid,_最大合計値]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % _合計値 は任意の変数として、利用者が設定する find_sum_max([_鍵,_値],P,_合計値,_合計値の条件,[_鍵,_最大合計値]) :- findall([_鍵,_値],( 単一(_鍵,P)), findsum(_値,P,_合計値)), L), findmax(_合計値,( append(_,[[_鍵,_合計値]|_],L), _合計値の条件), _最大合計値), append(_,[[_鍵,_最大合計値]|_],L). find_sum_min([_鍵,_値],P,_合計値,_合計値の条件,[_鍵,_最小合計値]) :- findall([_鍵,_値],( 単一(_鍵,P)), findsum(_値,P,_合計値)), L), findmin(_合計値,( append(_,[[_鍵,_合計値]|_],L), _合計値の条件), _最小合計値), append(_,[[_鍵,_最小合計値]|_],L). find_sum_max([_鍵,_値],P,[_鍵,_最大合計値]) :- findall([_鍵,_値],( 単一(_鍵,P)), findsum(_値,P,_合計値)), L), findmax(_合計値,append(_,[[_鍵,_合計値]|_],L),_最大合計値), append(_,[[_鍵,_最大合計値]|_],L). find_sum_min([_鍵,_値],P,[_鍵,_最小合計値]) :- findall([_鍵,_値],( 単一(_鍵,P)), findsum(_値,P,_合計値)), L), findmin(_合計値,append(_,[[_鍵,_合計値]|_],L),_最小合計値), append(_,[[_鍵,_最小合計値]|_],L). 単一(A,P) :- findsetof(A,P,L),!, append(_,[A|_],L). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/607 # # MySQLServer5.1(WinXP)です。 # # 下記のような3種類のテーブルがあります。 # これを集計して、指定したユーザーの指定月のアクセス日時と売上げ金額を表にしたいと思っています。 # # こんな感じに。 # # +--+--------+----------+-------+-----+ # | id | username| date   | access | sales | # +--+--------+----------+-------+-----+ # | 1 | admin | 2010-11-13 |   2 | 5000 | # | 1 | admin | 2010-11-14 |   2 | 5000 | # | 1 | admin | 2010-11-15 |  1 | 20000 | # +--+--------+----------+-------+-----+ # # # SELECT u.id AS id, u.username, DATE(a.created_at) AS date, COUNT(*) AS access, SUM(s.amount) AS sales # FROM sf_guard_user u INNER JOIN sales s ON u.username = s.user_id LEFT JOIN access_log a ON u.username = a.user_id # WHERE (u.username = 'admin' AND a.created_at > '2010-11-01 00:00:00' AND a.created_at < '2010-11-30 23:59:59') GROUP BY date ORDER BY a.created_at; # とやってみたのですがダメでした;; # # # ■ユーザー情報テーブル # mysql> select id,username from user; # +--+---------+ # | id | username | # +--+---------+ # | 1 | admin   | # +--+---------+ # # ■アクセスログテーブル # mysql> select * from access_log; # +--+-------+--------+------------------+ # | id | user_id | ip     | created_at      | # +--+-------+--------+------------------+ # | 1 | admin  | 127.0.0.1 | 2010-11-13 21:56:54 | # | 2 | admin  | 127.0.0.1 | 2010-11-13 21:56:54 | # | 3 | admin  | 127.0.0.1 | 2010-11-14 21:56:54 | # | 4 | admin  | 127.0.0.1 | 2010-11-14 21:56:54 | # | 5 | admin  | 127.0.0.1 | 2010-11-15 21:56:54 | # +--+-------+--------+------------------+ # # ■売上げ金額テーブル # mysql> select * from sales; # +--+-------+------+------------------+ # | id | user_id | amount| created_at      | # +--+-------+------+------------------+ # | 1 | admin  |  5000 | 2010-11-13 21:56:54 | # | 2 | admin  |  5000 | 2010-11-14 21:56:54 | # | 3 | admin  |  5000 | 2010-11-15 21:56:54 | # | 4 | admin  |  5000 | 2010-11-15 21:56:54 | # +--+-------+------+------------------+ # # '下記のような3種類のテーブルがあります。これを集計して、指定したユーザーの指定月のアクセス日時と売上げ金額を表にしたいと思っています。'(_username) :- user(_id,_username), アクセスログテーブル_date(_username,_アクセスログ_dateならび), 売上げ金額テーブル_date(_username,_売上金額テーブル_dateならび), 共通部分(_アクセスログ_dateならび,_売上金額テーブル_dateならび,_date_共通部分), write('+--+-------+--------+------------------+ \n'), write('| id | user_id | amount| created_at      | \n'), write('+--+-------+------+------------------+ \n), append(L0,[_date|R],_date_共通部分), length(L0,Len0), _id is Len0 + 1, count(( access_log(_,_user_id,_ip,_create_at), sub_atom(_create_at,0,10,_,_create_at)), _access), findsum(_amount,( sales(_,_user_id,_amount,_create_at), sub_atom(_create_at,0,10,_,_create_at)), _sales), write_formatted('| %t | %t | %t | %t | %t |\n',[_id,_username,_date,_access,_sales]), R = [], write('+--+-------+------+------------------+\n'). アクセスログテーブル_date(_user_id,_dateならび) :- findsetof(_date,( access_log(_,_user_id,_,_created_at), sub_atom(_create_at,0,10,_,_date)), _dateならび). 売上げ金額テーブル_date(_user_id,_dateならび) :- findsetof(_date,( sales(_,_user_id,_amount,_created_at), sub_atom(_create_at,0,10,_,_date)), _dateならび). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1288531658/652 # # [1] プログラミング演習 # [2]非負の整数値をキーボードから入力して、その整数値から8個の数字を取り出す。 #  unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。 # '非負の整数値をキーボードから入力して、その整数値から8個の数字を取り出す。 unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。' :- '非負の整数値をキーボードから入力して、'(_非負の整数値), 'その整数値から8個の数字を取り出す。'(_非負の整数値,_8個の数字ならび), 'unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。'(_8個の数字ならび,[28,24,20,16,12,8,4,0],_8個の数字を格納した整数). '非負の整数値をキーボードから入力して、'(_非負の整数値) :- write('非負の整数値を入力してください : '), get_line(Line), '非負の整数値入力診断'(Line,_非負の整数値),!. '非負の整数値をキーボードから入力して、'(_非負の整数値) :- '非負の整数値をキーボードから入力して、'(_非負の整数値). '非負の整数値入力診断'(Line,_非負の整数値) :- atom_to_term(Line,_非負の整数値,_), integer(_非負の整数値), _非負の整数値 >= 0,!. '非負の整数値入力診断'(Line,_非負の整数値) :- write_formatted('入力された %t からは非負の整数値は得られませんでした。再入力をお願いします。\n',[Line]), fail. 'その整数値から8個の数字を取り出す。'(_非負の整数値,_8個の数字ならび) :- number_chars(_非負の整数値,Chars), setof(A,member(A,Chars),L), length(_8個の数字ならび,8), '8個の数字を生成する'(L,_8個の数字ならび). '8個の数字を生成する'(_,[]) :- !. '8個の数字を生成する'(L,[N|R]) :- member(N,L), '8個の数字を生成する'(L,R). 'unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。'([],[],0) :- !. 'unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。'([N|R1],[M|R2],X) :- Y is N << M, 'unsigned int型を使い、4bitごとに区切ることによって8桁分の数字を格納する。とあります。'(R1,R2,Z), X is Y + Z. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/587 # # 下のようなカラムがあるのですが、value1〜3に1回でも出てくる値を # 重複なく取得したいのですが、うまくSQLで書けるものでしょうか。 # key, value1, valu2, value3(value1〜3は任意の文字列) # # たとえば、3個のレコード # 1, AAA, BBB, CCC # 2, DDD, AAA, CCC # 3, EEE, FFF, AAA # があった場合、AAA, BBB, CCC, DDD, EEE, FFFを出力したいです。 # # % table(_key,_value1,_value2,_value3). table(1,'AAA','BBB','CCC'). table(2,'DDD','AAA','CCC'). table(3,'EEE','FFF','AAA'). 'tableのvalue1〜3に1回でも出てくる値を重複なく取得したい' :- 'tableのvalue1〜3に1回でも出てくる値を重複なく取得したい'(L), append(_,[X|R],L), write_formatted('%t\n',[X]), R = []. 'tableのvalue1〜3に1回でも出てくる値を重複なく取得したい'(L) :- findsetof(_value,( table(_,_value1,_value2,_value3), append(_,[_value|_],[_value1,_value2,_value3])), L). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1288531658/172 # # [1] 授業単元: アルゴリズムとデータ構造 # [2] 問題文(含コード&リンク): #  typedef struct{char name[256]; unsigned char sex; unsigned char age;} PERSONAL_DATA # 上記の構造体PERSONAL_DATA型の配列(要素数n)に格納された # n人の名前・性別・年齢のデータの中から同じ年齢の2人組の名前を全て表示せよ。 # % n人が反映されていない。 'n人の名前・性別・年齢のデータの中から同じ年齢の2人組の名前を全て表示せよ' :- findsetof(_年齢,個人データ(_名前,_性別,_年齢),_年齢ならび), append(_,[_年齢|R],_年齢ならび), findall(_氏名,個人データ(_名前,_性別,_年齢),_氏名ならび), 同じ年齢の2人組の名前を表示(_年齢,_氏名ならび), R = []. 同じ年齢の2人組の名前を表示(_,[]) :- !. 同じ年齢の2人組の名前を表示(_,[_]) :- !. 同じ年齢の2人組の名前を表示(_年齢,_氏名ならび) :- write_formatted('年齢=%t',[_年齢]), 組み合わせ(_氏名ならび,2,L), write_formatted(' (%t,%t)',L), fail. 同じ年齢の2人組の名前を表示(_,_) :- write('\n'). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/531 # # ACCESS SQLで以下のような処理はできるでしょうか? # (VBAの機能等を含めないSQLの処理結果のみで) # # 【テーブル】 # Tくだもの(名前, 名前) # Tアンケート(名前, 評価) ←評価には1〜5の数値が入る # # 【結果】 # みかん, 1, 3, 5, 3, 4, ... (以降アンケートの数だけ続く) # 評価値の列表示 :- findsetof(_名前,くだもの(_名前),_名前ならび), append(_,[_名前|R],_名前ならび), findall(_評価,アンケート(_名前,_評価),_評価ならび), concat_atom(_評価ならび,', ',_評価表示文字列), write_formatted('%t, %t\n',[_名前,_評価表示文字列]), R = []. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 評価値の列表示 :- くだもの(_名前), findall(_評価,アンケート(_名前,_評価),_評価ならび), concat_atom(_評価ならび,', ',_評価表示文字列), write_formatted('%t, %t\n',[_名前,_評価表示文字列]), fail. 評価値の列表示. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1272006124 # # <問題> # 全社員が売上を記録した日を求めよ。 これをPrologプログラムとして表現しなさい。 全社員が売上を記録した日を求めよ(_日) :- count(社員(_社員),_社員人数), findsetof(_日,売上(_社員,_日,_データ),L1), append(_,[_日|R],L1), findsetof(_社員,社員(_社員,_日,_データ),L2), length(L2,_社員人数). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% count(P,N) :- findsum(1,P,F), N is truncate(F). findsum(_選択項,_項,_合計値) :- findall(_選択項,_項,_値ならび), 加算(_値ならび,_合計値),!. findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L). 加算(trunc(L),SL) :- 加算(L,SL2), findall(A,(member(B,SL2) , A is trunc(B)),SL),!. 加算(四捨五入(L),SL) :- 加算(L,SL2), findall(A,(member(B,SL2) , A は 四捨五入(B)),SL),!. 加算(切捨て(L),SL) :- 加算(L,SL2), findall(A,(member(B,SL2) , A は 切捨て(B)),SL),!. 加算(切り上げ(L),SL) :- 加算(L,SL2), findall(A,(member(B,SL2) , A は 切り上げ(B)),SL),!. 加算([],L) :- var(L), L = 0.0e+00,!. 加算([],L) :- \+(var(L)), 加算の変数に零をおく(L),!. 加算([L|R],SL) :- ならび(L), 転置([L|R],L1), 加算_2(L1,SL),!. 加算(X,S) :- 加算_1(X,0.0e+00,S). 加算_1([],S,S) :- !. 加算_1([A|R],Y,S) :- ならび(A), ならび(Y), !, ならび加算(A,Y,Z), 加算_1(R,Z,S),!. 加算_1([A|R],Y,S) :- atom(A), atom_number(A,I), integer(I), Z is I + Y, 加算_1(R,Z,S),!. 加算_1([A|R],Y,S) :- atom(A), atom_number(A,F), real(F), Z is F + Y, 加算_1(R,Z,S),!. 加算_1([A|R],Y,S) :- atom(A), 加算_1(R,Y,S),!. 加算_1([A|R],Y,S) :- A1 は A, Z is A1 + Y, 加算_1(R,Z,S). 加算_2([],[]) :- !. 加算_2([L|R],[S|R2]) :- 加算(L,S), 加算_2(R,R2). ならび加算([],L,L) :- !. ならび加算(L,[],L) :- !. ならび加算([A|R],[B|R1],[C|R2]) :- C is A + B, ならび加算(R,R1,R2). 加算の変数に零をおく([]) :- !. 加算の変数に零をおく([A|R]) :- 変数(A), A = 0.0e+00, 加算の変数に零をおく(R),!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1272006124 # # <問題> # 全社員が売上を記録した日を求めよ。 # これを Prolog プログラムとして表現しなさい。 売上(稲葉,'20140228'). 売上(尾崎,'20140227'). 売上(稲葉,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140226'). 売上(尾崎,'20140228'). 社員(尾崎). 社員(稲葉). '全社員が売上を記録した日を求めよ。'(_全社員が売上を記録した日) :- findsetof(_日,売上(_,_日),L), member(_全社員が売上を記録した日,L), forall(社員(_社員),売上(_社員,_全社員が売上を記録した日)). findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L) . % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1056938879/131 # # table1 # id 名前 状態_id # ------------------ # 1 キムラ A # 2 田中   B # # # talbe2 # id 状態_id 状態(varchar) # ------------------ # 1 A 0 # 2 A 0 # 3 A 1 # 4 B 0 # 5 B 0 # # 結果 # 名前 状態 # ------------------ # キムラ 1 # 田中 0 # # になるようなSQL文でどう書きまっか?ちなみにORACLE9i。 # 結果(_名前,_状態) :- findsetof(_名前,table1(_,_名前,_),L1), sort(L1,L2), append(_,[_名前|_],L2), table1(_id,_名前,_状態_id) table2(_id,_状態_id,_状態). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/500 # # No-色 # レコード1 001,赤 # レコード2 002,赤 # レコード3 003,青 # レコード4 004,青 # レコード5, 005,赤 # レコード6, 006,黒 # # このデータで、 『select 色,count(色 from テーブル group by 色 』とした時 # 最大レコード数(この場合、赤の5)を取得したいのですが・・・ # 定義された節数のもっとも多い色は(_色,_度数) :- findsetof(_色,テーブル(_No,_色),L1), findall([_度数,_色],( member(_色,L1), count(テーブル(_,_色),度数)), L2), findmax(_度数,member([_度数,_],L2),_最大度数), append(_,[[_度数,_色]|R],L2). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/490 # # SQLite3を使用しています。 # select distinct(hoge) # でhogeのユニークな値一覧が取得できますが、 # この結果の数を得る方法はないでしょうか? # # よろしくお願いします。 # # hogeのユニークな値のカウント(_テーブル,_解の数) :- hogeのユニークな値一覧を取得する(_テーブル,_値一覧), length(_値一覧,_解の数). hogeのユニークな値一覧を取得する(_テーブル,_値一覧) :- atom(_テーブル), テーブル構造(_テーブル/N,Nth,hoge), length(L,N), P =.. [_テーブル|L]), finsetof(X,( call(P), list_nth(Nth,L,X)), _値一覧),!. hogeのユニークな値一覧を取得する(_テーブル/N,_値一覧) :- テーブル構造(_テーブル/N,Nth,hoge), length(L,N), P =.. [_テーブル|L]), finsetof(X,( call(P), list_nth(Nth,L,X)), _値一覧),!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/tech/1284632294/642 # # [1] 授業単元:プログラミング実習 # [2] 問題文(含コード&リンク):以下の式が成り立つように英字に数字をあてはめよ。 # ただし同じ英字には同じ数字が当てはまる。 # send # +)more # ------ # money # '以下の式(send+more=money)が成り立つように英字に数字をあてはめよ。ただし同じ英字には同じ数字が当てはまる。'(_数1,_数2,_数3) :- abolish(アルファベット数値対応/2), アルファベットを得る([send,more,money],_アルファベット), アルファベット対応数値候補表の定義(_アルファベット), 語彙に対応する数を得る(send,_数1), 語彙に対応する数を得る(more,_数2), 語彙に対応する数を得る(money,_数3), _数3 is _数1 + _数2. アルファベット対応数値候補表の定義(_アルファベット) :- append(_,[_文字|R],_アルファベット), for(0,N,9), assertz(アルファベット数値対応(_文字,N)), R = [],!. 語彙に対応する数を得る(_語彙,_数) :- atom_chars(_語彙,_文字ならび), アルファベットを基礎に数のならびを得る(_文字列ならび,_数ならび), 数字ならびから10進数を得る(_数ならび,_,_数). アルファベットを基礎に数のならびを得る([],[]) :- !. アルファベットを基礎に数のならびを得る([A|R1],[N|R2]) :- アルファベット数値対応(A,N), アルファベットを基礎に数のならびを得る(R1,R2). 数字ならびから10進数を得る([N],0,N) :- !. 数字ならびから10進数を得る([M|R],J,N) :- 数字ならびから10進数を得る(R,J1,N1), J is J1 + 1, N is M * truncate(10 ^ J1) + N1. アルファベットを得る(_語彙ならび,_アルファベット) :- concat_atom(_語彙ならび,S), atom_hcars(S,Chars), setof(_文字,member(_文字,Chars),_アルファベット). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/408 # # よろしくお願いいたします。 # # ・DBMS名とバージョン #   HiRDB Ver8 # # ・テーブルデータ # <Aテーブル> # A1   A2   A3   A4   A5 # ------- ------- ------- ------- ---------- # XXXXXXX XX1   ABC 3 2009/05/08 # WWCWWCW WW2   CCB 1 2008/03/21 # DDDDDDD DD1   JPN 5 2007/08/08 # GGGGGGG GX9   SOX 2 1977/01/04 # FFFFFFF USJ   NPB 3 2001/09/11 # # # <Bテーブル> # B1   B2   B3   B4   B5 # ------- ------- ------- ------- ---------- # XXXXXXX XX1  ibicha  oshimu 2002/07/05 # XXXXXXX XX1  takeshi okada 2005/07/15 # XXXXXXX XX1  kamo shu 1857/09/25 # WWCWWCW WW2  wao wao 2008/10/22 # DDDDDDD DD1  ui hhh 2006/06/30 # DDDDDDD DD1  jojoj x5xx 1999/09/09 # DDDDDDD DD1  momo hara 2005/03/07 # DDDDDDD DD1  itai u- 2003/12/22 # DDDDDDD DD1  koma nogoal 2007/04/26 # GGGGGGG GX9   dame record 2009/11/14 # FFFFFFF USJ   iki tai 1995/08/15 # FFFFFFF USJ  sst ebuspi 2004/01/05 # FFFFFFF USJ  bb pp 2009/08/23 # # ・欲しい結果 # A1   A2   B1   B2   A4 B1andB2COUNT # ------- ------ ------- ------- ------- ------------ # GGGGGGG GX9 GGGGGGG GX9 2 1 # # # ・説明 # SQLで違うテーブルの値を比較して値に差があるレコードを抽出したいのですがヒントをいただけないでしょうか。 # A1とB1は、A2とB2は同じデータが基本です。 # Aテーブルの「A4」カラムにはBテーブルのレコード数を持っています。 # しかし、よくよく見るとAテーブルの「GGGGGGG」のA4には「2」のはずなのにBテーブルには実際にレコードは1つしかありません。 # こういう状態になってしまっているのを割り出したいのですがどのようにA4とBテーブルで数があってないものを抽出できるでしょうか。 # よろしくお願いいたします。 # # 集約値A4とBテーブルの組数が不整合であるか、Bテーブルに存在する組の集約がAテーブルにない :- findsetof([A1,A2],'Aテーブル'(A1,A2,_,_,_),L1), write('集約値A4とBテーブル組の不整合'), 集約値A4とBテーブル組の不整合(L1), findsetof([B1,B2],(Bテーブル'(B1,B2,_,_,_),L2), write('Bテーブルは存在するがAテーブルに集約されていない\n'), 'Bテーブルは存在するがAテーブルに集約されていない'(L2),!. 集約値A4とBテーブル組の不整合([]) :- !. 集約値A4とBテーブル組の不整合([[A1,A2]|R]) :- 'Aテーブル'(A1,A2,_,A4,_), count('Bテーブル'(A1,A2,_,_,_),Count), 診断(A1,A2,A4,Count), 集約値A4とBテーブル組の不整合(R). 診断(A1,A2,A4,0) :- write('対応するBテーブルの組がありません\n'),!. 診断(A1,A2,A4,Count) :- \+(A4=Count), write_formatted('Aテーブルのキー%t,%tの集約値A4=%tとBテーブルの同一キーのカウントが不整合です\n',[A1,A2,A4,Count]),!. 診断(_,_,_,_). 'Bテーブルは存在するがAテーブルに集約されていない'([]) :- !. 'Bテーブルは存在するがAテーブルに集約されていない'([[B1,B2]|R]) :- 'Aテーブル'(B1,B2,_,_,_), 'Bテーブルは存在するがAテーブルに集約されていない'(R),!. 'Bテーブルは存在するがAテーブルに集約されていない'([[B1,B2]|R]) :- 'Bテーブル'(B1,B2,B3,B4,B5), write_fromatted('Aテーブルに集約が存在しない組は%t,%tです\n',[B1,B2,B3,B4,B5]), 'Bテーブルは存在するがAテーブルに集約されていない'(R),!. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/451 # # 最近になってDBの勉強を始めたのですが詰ってしまったのでちょっと質問させてください。 # # 使っているのは、derbyです、バージョンはij起動時に10.5と表示されています # # ・テーブルデータ # 受注表 # ------------------- # 顧客コード | 受注個数 # ------------------- # 001 | 100 # 002 | 200 # 003 | 100 # 001 | 300 # 003 | 400 # # ・欲しい結果 # 結果 # --------------------------------- # 顧客コード | 個人平均値 | 全体平均値 # --------------------------------- # 001 |200 |240 # 002 |200 |240 # 003 |250 |240 # # ・説明 # SELECT #   顧客コード, #   AVG(受注個数) AS 個人平均値, #   (SELECT AVG(受注個数) FROM 受注表) AS 全体平均値  # FROM # 受注表 # GROUP BY # 顧客コード; # # 上記のSQLだとエラーが出て動かない(エラーメッセージ失念してしまいました) # どこがどう悪いのか現在の自分では分からなくてどうしようもない状態です。 # '受注簿から 顧客コード | 個人平均値 | 全体平均値 を各行に表示' :- findavg(_受注個数,受注表(_,_受注個数),_全体平均値), findsetof(_顧客コード,受注表(_顧客コード,_受注個数),L), append(_,[_顧客コード|R],L), findavg(_受注個数,受注表(_顧客コード,_受注個数),_個人平均値), write_formatted('%t | %t | %t\n',[_顧客コード,_個人平均値,_全体平均値]), R = []. % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/609 # # postgres8.4を使ってます。 # レコード数が3件以上あるものを取得したいのですが # どう書けばよいでしょうか。 # # やりたいことのイメージはこんな感じです。 # select recordCD from Table where recordCD in (select recordCD from Table where count(recordCD) > 3); # % これだとrecodCDが件数分出力されてしまうので、一件のみの出力に変更した recordCDの位置を得る(_引数の数,_位置番号) :- 'テーブル構造'('Table',_引数の数,_位置番号,recordCD). レコード数が3件以上あるものを取得する(_recordCD) :- recordCDの位置を得る(_引数の数,_位置番号), functor(Q,'Table',_引数の数), arg(_位置番号,Q,_recordCD), findsetof(_recordCD,call(Q),L1), member(_recordCD,L1), count(Q,Count), Count >= 3. % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/609 # # postgres8.4を使ってます。 # レコード数が3件以上あるものを取得したいのですが # どう書けばよいでしょうか。 # # やりたいことのイメージはこんな感じです。 # select recordCD from Table where recordCD in (select recordCD from Table where count(recordCD) > 3); # % これだとrecodCDが件数分出力されてしまうので、一件のみの出力に変更した recordCDの位置を得る(_引数の数,_位置番号) :- 'テーブル構造'('Table',_引数の数,_位置番号,recordCD). レコード数が3件以上あるものを取得する(_recordCD) :- recordCDの位置を得る(_引数の数,_位置番号), functor(Q,'Table',_引数の数), arg(_位置番号,Q,_recordCD), findsetof(_recordCD,call(Q),L1), member(_recordCD,L1), count(Q,Count), Count >= 3. % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/594 # #(問) # ID | DATE     | DATA # --+----------+----- # 1 | 2007-11-11 | aaa # 2 | 2007-11-11 | bbb # 1 | 2007-11-10 | ccc # 3 | 2007-11-12 | ddd # 3 | 2007-11-11 | eee # 4 | 2007-11-10 | fff # 1 | 2007-11-12 | ggg # # このようなテーブルから、各idに対して最新の5件だけ抽出しなさい 各idに対して最新の5件だけ抽出する(_ID,_DATE,_DATA) :- findsetof(_ID,テーブル(_ID_1,_DATE_1,_DATA_1),L1), member(_ID,L1), findall([_DATE,_ID,_DATE,_DATA],テーブル(_ID1,_DATE,_DATA),L2), 最新の5件を抽出(L3,Len,_ID,_DATE,_DATA). 最新の5件を抽出(L1,_ID,_DATE,_DATA) :- sort(L1,L2), reverse(L2,L3), length(L3,Len), '5件を抽出'(L3,Len,_ID,_DATE,_DATA). '5件を抽出'(L,Len,_ID,_DATE,_DATA) :- Len =< 5, member([_,_ID,_DATE,_DATA],L). '5件を抽出'(L,Len,_ID,_DATE,_DATA) :- Len > 5, for(1,N,5), list_nth(N,L,[_,_ID,_DATE,_DATA]), N =< 5. % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/445 # # MySQL 5.1での質問です。 # # A B C # 1 q name1 # 2 w name2 # 3 e name3 # 4 q name4 # 5 t name5 # # 上記テーブルのB列の重複を除いたA,B,C列がほしい場合 # # SELECT DISTINCT B FROM table_name; # # ではB列の重複を除くだけで他の列がとれません。他の列も併せて取得する場合はどのような解決策がありますか? # # 望んでる結果は以下のものです。 # # A B C # 1 q name1 # 2 w name2 # 3 e name3 # 5 t name5 # 'B列の重複を除く際のルール'(_重複行ならび,_重複を除いた行) :- _重複行ならび = [_重複を除いた行|_],!. 'B列の重複を除いたA,B,C列がほしい'(_重複を除いた行) :- findsetof(_B列,foo(_,_B列,_),_重複を取り除いたB列ならび), member(_B列,_重複を取り除いたB列ならび), findall(_行,( member([_A列,_B列,_C列],foo(_A列,_B列,_C列)), L1), 'B列の重複を除く際のルール'(L1,_重複を除いた行). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/386 # # ・DBMS名とバージョン #   SQL Server Compact 3.5 # # ・テーブルデータ 家計簿のようなデータです # Cd1 Cd2  Item      Cost # ---+----+-----------+---------------- # 1   0    食費      NULL # 1   1    弁当      500 # 2   0    光熱費     NULL # 2   1    水道料     1000 # 2   1    水道料     2000 # 2   2    ガス料     4000   # # ・欲しい結果 # Cd1 Cd2  Item      Sum # ---+----+-----------+---------------- # 1   0    食費      500 # 2   0    光熱費    7000 # # ・説明 # Cd1が大分類、Cd2が中分類を表してます。 # Cd2が0の場合、Itemは大分類の名称。それ以外の場合、中分類の名称が入ってます。 # 大分類ごとにItemと合計額が欲しいです。 # # # 大分類ごとにItemと合計額が欲しい :- findsetof([_Cd1,_Item],家計簿(_cd1,0,_Item,_),L1), member([_Cd1,_Item],L1), findsum(_Cost,(家計簿(_Cd1,_Cd2,_,_Cost),\+(_Cd2=0)),_Sum), write_formatted('%t %t %t %t\n',[_Cd1,0,_Item,_Sum]), fail. 大分類ごとにItemと合計額が欲しい. % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/374 # # はじめまして # # ・Access2000 # # 下のようなテーブルがあったときに # # テーブルA # 名前 科目 点数 # ---------------------- # 岡村 国語 51 # 岡村 数学 48 # 岡村 英語 39 # 徳田 国語 60 # 徳田 数学 30 # 徳田 英語 48 # 渡辺 国語 28 # 渡辺 数学 67 # 渡辺 英語 25 # # 下のように各科目の最高点を名前つきで取得するにはどうすればいいのでしょうか? # # 結果(各科目の最高点) # ---------------------- # 徳田 国語 60 # 岡村 数学 48 # 徳田 英語 48 # # # よろしくおねがいします。 # # # 各科目の最高点を名前つきで取得する(_最高点ならび) :- findsetof(_科目,テーブルA(_,_科目,_),_科目ならび), findall([_最高点氏名,_科目2,_最高点],( member(_科目2,_科目ならび), findmax([_点数,_名前2],テーブルA(_名前2,_科目2,_点数),[_最高点,_最高点氏名])), _最高点ならび). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/369 # # 会社コード|部署コード|課コード|給料 # # というテーブルがあったとき、 # GROUP BY 会社コード , 部署コード # で部署毎の給料合計を出したいけど、 # 抽出結果の列には課コードも含めたい、 # というときってどうしたら良いのでしょうか? # イメージは↓の感じです。 # A会社|B部署|C課|100万円 # A会社|B部署|D課|100万円 # A会社|E部署|F課|500万円 # A会社|E部署|G課|500万円 # '抽出結果に課コードを加えた、会社コード・部署コードで集約した給与合計ならび'(_給与合計ならび) :- findsetof([_会社コード,_部署コード,_課コード],給料(_会社コード,_部署コード,_課コード,_),L1), findall([_会社コード,_部署コード,_課コード,_給与合計],( member([_会社コード,_部署コード,_課コード],L1), findsum(_給与,給与(_会社コード,_部署コード,_,_給与),_給与合計)),_給与合計ならび). % 以下のサイトは # 出典:: http://hibari.2ch.net/test/read.cgi/db/1274791771/364 # # 商品コード|売上店舗|売上個数 # # というテーブルから、 # 店舗毎の売上をまとめた列を追加した以下のようなテーブルを作りたいです。 # # 商品コード|店舗a売上個数|店舗b売上個数|店舗c売上個数| # # 現在は店舗毎の売上を集計したテーブルを別に作って、それを結合させて作っていますが、それ以外で単一のsqlで書く場合どうなるでしょうか? # # 簡単かと思ったら思いつきません。。 # お願いします。 # # # '商品コード|店舗a売上個数|店舗b売上個数|店舗c売上個数|'(_商品番号・売上店舗別売上合計ならび) :- findsetof(_商品番号,商品売上(_商品番号,_,_),L1), findall([_商品番号|_店舗別売上合計ならび],( member(_商品番号,L1), findall(_店舗別売上合計ならび,( member(_売上店舗,[a,b,c]), findsum(_売上個数, 商品売上(_商品番号,_売上店舗,_売上個数), _店舗別売上合計ならび))), _商品番号・売上店舗別売上合計ならび). % 以下のサイトは # 出典:: http://pc12.2ch.net/test/read.cgi/tech/1279286575/74 # # 【質問テンプレ】 # [1] 授業単元:情報処理課題 # [2] 問題文(含コード&リンク):英語の文章で構成されるテキストファイルに対して、その中に含まれる総文字数と異なる文字ごとの出現回数とを数え上げよ。 # [3.3] 言語:C # [4] 期限:2010年07月19日00:00まで # [5] その他の制限:Xcodeを使用しています。読み込むファイルは"/Users/user/Desktop/data.txt"で。 # # 似たようなプログラムを作った時は「数列を入力し総文字数と数字ごとに出現回数とを数え上げグラフで表示」というような課題で # 数字だったので0〜9までを表示することが簡単に出来ましたがアルファベットなのでa-zをどう表示したものか # またstrlenだと半角空白も数えてしまうので総"文字"数とずれてくるのではないかと悩んでいます。 # よろしくお願いします。 # # 英語の文章で構成されるテキストファイルに対して、その中に含まれる総文字数と異なる文字ごとの出現回数とを数え上げる(_総文字数,_文字ごとの出現度数ならび) :- get_chars('/Users/user/Desktop/data.txt',Chars), length(Chars,_総文字数), findsetof(C,member(C,Chars),L1), findall([C,_出現度数],(member(C,L1),count(member(C,Chars),_出現度数)),_文字ごとの出現度数ならび). findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L). % 以下のサイトは # 出典:: http://pc12.2ch.net/test/read.cgi/tech/1276810079/920 # # [1] C言語プログラミング演習 # [2] 問題文(含コード&リンク # ATM(Automated Teller Machine; 現金自動預け払い機)システムを実現するプログラムを考える。 # # 氏名,口座番号,暗証番号,預金残高を要素とする構造体を宣言し, 512人分の口座が作成可能なようにせよ.また,初期値として次のように構造体の内容を設定せよ. # # 立命太郎の口座番号は1234で,預金残高を1,234,560円に設定する. # 野路花子の口座番号は5678で,預金残高を987,600円に設定する. # 衣笠一郎の口座番号は9012で,預金残高を538,600円に設定する. # 暗証番号は口座番号に1111を足して10000で割った余りに設定する. # ここで暗証番号は、口座番号を引数としてとり、それに1111を足して10000で # 割った余りを計算する関数を作成して設定すること. # 上記の方法で初期値を設定し、設定された3人の預金残高を画面へ出力する # プログラムを作成せよ.ただし、ひとり分の預金残高を表示する関数を作成して、 # これを繰り返し使って3人の預金残高を出力すること. # # % ./initAccount # 預金残高は次のとおりです. # 立命太郎 (1234) 1234560 円 # 野路花子 (5678) 987600 円 # 衣笠一郎 (9012) 538600 円 # % 預金口座の初期設定(_ファイル) :- w3c('http://pc12.2ch.net/test/read.cgi/tech/1276810079/920',Lines), append(_,[Line|R],Lines), split(Line,[の口座番号は,'で,貯金残高を,円に設定する.'],[_氏名,_口座番号,_預金残高]), assertz(預金口座(_氏名,_口座番号,_預金残高)), _暗証番号 is (_口座番号 + 1111) mod 10000, assertz(預金口座暗証番号(_口座番号,_暗証番号)), R = [],!. 預金口座の初期設定(_). 設定された3人の預金残高を画面へ出力する :- findsetof(_口座番号,預金口座(_,_口座番号,_),_口座番号ならび), write('預金残高は次のとおりです.\n'), append(_,[_口座番号|R],_口座番号ならび), ひとり分の預金残高を表示する(_口座番号), R = []. ひとり分の預金残高を表示する(_口座番号) :- 預金口座(_氏名,_口座番号,_預金残高), write_formatted('%t (%t) %t 円\n',[_氏名,_口座番号,_預金残高]),!. % 以下のサイトは # 出典:: http://pc12.2ch.net/test/read.cgi/tech/1276810079/887 # # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク): # fgets() を使って50文字以下の文字列を入力し,文字列中の各 # 文字の出現回数を数えるプログラムを作成せよ。 # 実行例 # 文字列は? abcdef,abb(ccc110) # a : 2 # b : 3 # c : 4 # d : 1 # e : 1 # f : 1 # , : 1 # ( : 1 # 1 : 2 # 0 : 1 # ) : 1 # '50文字以下の文字列を入力し,文字列中の各文字の出現回数を数える' :- '50文字以下の文字列を入力し'(_50文字以下の文字列), 文字列中の各文字の出現回数を数える(_50文字以下の文字列,_文字ごとの出現回数ならび), 文字ごとの出現回数を表示する(_文字ごとの出現回数ならび). '50文字以下の文字列を入力し'(_50文字以下の文字列) :- get_line(_50文字以下の文字列), length(_50文字以下の文字列,_文字数), _文字数 =< 50. 文字列中の各文字の出現回数を数える(_文字列,_出現回数ならび) :- どんな文字が出現したかならびに数え上げる(_文字列,_重複を許さない文字ならび), 各文字の出現回数を数える(_文字列,_重複を許さない文字ならび,_出現回数ならび). どんな文字が出現したかならびに数え上げる(_文字列,_重複を許さない文字ならび) :- findsetof(_文字,( sub_atom(_文字列,_,1,_,_文字)), _重複を許さない文字ならび). 各文字の出現回数を数える(_文字列,_重複を許さない文字ならび,_出現回数ならび) :- findall([_出現回数,_文字],( append(_,[_文字|_],_重複を許さない文字ならび), count(sub_atom(_文字列,_,1,_,_文字),_出現回数)), _出現回数ならび). 文字ごとの出現回数を表示する(_文字ごとの出現回数ならび) :- append(_,[[_出現回数,_文字]|R],_文字ごとの出現回数ならび), writef('%t : %t\n',[_文字,_出現回数]), R = []. % % 文字列をならび(リスト)に変換しない場合は、非決定性述語sub_atom/5を使う。 % % 出現回数と文字の並びがひっくり返っているのは整列を求められた場合への備えだが、 % 好ましいことではないかも知れない。 % % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1274791771/243 # # プログラム言語で以下の集約を定義しなさい。  # SELECT CASE pref_name #        WHEN '徳島' THEN '四国' #        WHEN '香川' THEN '四国' #        WHEN '愛媛' THEN '四国' #        WHEN '高知' THEN '四国' #        WHEN '福岡' THEN '九州' #        WHEN '佐賀' THEN '九州' #        WHEN '長崎' THEN '九州' #        ELSE 'その他' END AS district, #     SUM(population) #  FROM PopTbl #  GROUP BY CASE pref_name #        WHEN '徳島' THEN '四国' #        WHEN '香川' THEN '四国' #        WHEN '愛媛' THEN '四国' #        WHEN '高知' THEN '四国' #        WHEN '福岡' THEN '九州' #        WHEN '佐賀' THEN '九州' #        WHEN '長崎' THEN '九州' #        ELSE 'その他' END; 地方で集約する(_地方,_人口) :- findsetof(_地方,( 'PopTbl'(_pref_name,_population), 地方(_地方,_pref_name)), L1), append(_,[_地方|_],L1), findsum(_population,( 'PopTbl'(_pref_name,_population), 地方(_地方,_pref_name)), _人口). 地方(四国,徳島). 地方(四国,香川). 地方(四国,愛媛). 地方(四国,高知). 地方(九州,福岡). 地方(九州,佐賀). 地方(九州,長崎). % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1274791771/231 # # tbl1にnum1,num2,id1,id2,id3 # tbl2にid,name,ssというフィールドがあるとして # SELECT name, num1, num2, id1, id2, id3, time FROM tbl1, tbl2 # WHERE num1 = 1 # AND id1 = ( SELECT id FROM tbl2 WHERE ss = "monga") # 上記のようなSQLを # 特定のフィールドが他の行と重複してたら抜かすというのはどうやればいいでしょうか? # 単にdistinctつけるだけだとどれかひとつでも重複していなかったら抽出されますよね。 # id1,id2,id3が他のレコードのid1,id2,id3と重複してたら # 検索結果に入れないみたいな感じにしたいのですが。 # MYSQLです。 'id1,id2,id3が他のレコードのid1,id2,id3と重複してたら検索結果に入れない'([_name,_num1,_num2,_id1,_id2,_id3]) :- findall([_name,_num1,_num2,_id1,_id2,_id3],( tbl1(num1,_num2,_id1,_id2,_id3), num1 = 1, tbl2(id1,_name,monga)), L1), findsetof([_id1,_id2,_id3],member([_,_,_,_id1,_id2,_id3],L1),L2), findall([_id1,_id2,_id3],( count((member([_id1,_id2,_id3],L2),1)), L2), member([_name,_num1,_num2,_id1,_id2,_id3],L1), member([_id1,_id2,_id3],L2). % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1274791771/139 # # 期間の抽出について相談です。 # 元情報 # ID    START    END # -----   -----    ----- # 10    2010/06/01  2010/06/12 # 10    2010/06/13  2010/06/14 # 10    2010/06/15  NULL # 20    2010/06/01  2010/06/11 # 20    2010/06/13  2010/06/15 # ↓ # 欲しい情報 # ID    START    END # -----   -----    ----- # 10    2010/06/01  NULL # 20    2010/06/01  2010/06/11 # 20    2010/06/13  2010/06/15 # # ・開始日、終了日の期間重複はなし # ・IDごとにデータを抽出。抽出単位は連続している期間の最小開始日と最大終了日 # ・期間は綺麗に連続(ID=10)することもあれば非連続することもある(ID=20) # # アドバイス願います。 # # 'IDごとにデータを抽出。抽出単位は連続している期間の最小開始日と最大終了日' :- findsetof(_ID,期間(_ID,_期間下限,_期間上限),L1), findall([_ID,_最小開始日,_最大終了日],( member(_ID,L1), findmin([_ID,_開始日],開始日(_ID,_開始日),_最小開始日), findmax([_ID,_終了日],終了日(_ID,_終了日),_最大終了日)), L). write('ID START END \n----- ----- ----- \n'), append(_,[[_ID,_Start,_End]|R],L), write_formatted('%t %t %t\n',[_ID,_Start,_End]), R = []. 開始日(_ID,_開始日) :- 期間(_ID,_開始日,_). 終了日(_ID,_終了日) :- 期間(_ID,_開始日,_終了日),\+(_終了日='NULL'). % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1274791771/96 # # 教えてください # table aから(dept,place)でのくくりでcount の次のレスに示すようにtop3を抽出したいです # # table a # dept|place|ext|count # aaaa|aaaaa|jar|10 # aaaa|aaaaa|com|4 # aaaa|aaaaa|scr|20 # aaaa|aaaaa|exe|80 # aaaa|aaaaa|bat|2 # aaaa|bbbbb|ace|10 # aaaa|bbbbb|arj|4 # aaaa|bbbbb|zip|20 # aaaa|bbbbb|rar|80 # aaaa|bbbbb|lzh|2 # bbbb|aaaaa|mdb|10 # bbbb|aaaaa|xls|4 # bbbb|aaaaa|ppt|20 # bbbb|aaaaa|doc|80 # bbbb|aaaaa|txt|2 # bbbb|bbbbb|gif|10 # bbbb|bbbbb|png|4 # bbbb|bbbbb|jpg|20 # bbbb|bbbbb|bmp|80 # bbbb|bbbbb|tif|2 # ↓ # aaaa|aaaaa|exe|80 # aaaa|aaaaa|scr|20 # aaaa|aaaaa|jar|10 # aaaa|bbbbb|rar|80 # aaaa|bbbbb|zip|20 # aaaa|bbbbb|ace|10 # bbbb|aaaaa|doc|80 # bbbb|aaaaa|ppt|20 # bbbb|aaaaa|mdb|10 # bbbb|bbbbb|bmp|80 # bbbb|bbbbb|jpg|20 # bbbb|bbbbb|gif|10 # 'table aからdept,placeのくくりでcountのtop3を抽出' :-     findsetof([_dept,_place],a(_dept,_place,_exit,_count)),     findall(X,findrsort([_count],a(_dept,_place,_ext,_count),X),L),     for(1,N,3),     list_nth(N,L,X),     write_formatted('%t|%t|%t|%t\n',X),     N = 3,     fail. 'table aからdept,placeのくくりでcountのtop3を抽出'. % findrsort/3,findsetof/2 は http://nojiriko.asia/prolog/findsort.html 参照 % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1274791771/39 # # # maindata # ----------------------------- # main_id | main_name | junle # ----------------------------- # 1000001 | aaaaaaaaa | 1 # 1000002 | bbbbbbbbb | 2 # 1000003 | ccccccccc | 1 # 1000004 | ddddddddd | 3 # 1000005 | eeeeeeeee | 1 # # itemdata # -------------------- # item_id | item_name # -------------------- # 9000001 | AAAAAAAAA # 9000002 | BBBBBBBBB # 9000003 | CCCCCCCCC # 9000004 | DDDDDDDDD # 9000005 | EEEEEEEEE # # itemlist # ------------------ # main_id | item_id # ------------------ # 1000001 | 9000001 # 1000001 | 9000004 # 1000002 | 9000002 # 1000002 | 9000005 # 1000004 | 9000002 # 1000004 | 9000004 # 1000004 | 9000005 # # という3つのテーブルがある場合に、maindata.junle='1'を条件に # main_id | main_name | itemlists # ---------------------------------------------------- # 1000001 | aaaaaaaaa | AAAAAAAAA DDDDDDDDD # 1000003 | ccccccccc | # 1000004 | eeeeeeeee | BBBBBBBBB DDDDDDDDD EEEEEEEEE # ---------------------------------------------------- # ※itemlistsは空白で連結 # # という結果を求めたいと思います。 # サブクエリを利用して一度に求めることは可能でしょうか? # それとも、アプリケーション側でループの際に都度itemlistsを生成する必要がありますでしょうか? # 'main_id | main_name | itemlists'(_main_id,_main_name,_itemlists) :- findsetof([_main_id,_main_name],( _junle='1', maindata(_main_id,_main_name,_junle)), L), member([_main_id,_main_name],L), findall(_item_name,( itemlist(_main_id,_item_id), itemdata(_item_id,_item_name)), _itemlists_1), concat_atom(_itemlists_1,' ',_itemlists). % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1274791771/29 # # まったくわからないのです教えてください・・ # # 1、名前はわかっているが、コードが不明な商品の受注明細を照会するSELECT文を記述せよ。 # 副照会:商品名からコードを求めるSELECT文 # 主照会:商品コードから商品の受注明細を照会するSELECT文 # # 2、平均受注個数を超える商品に仕入れ先を照会するSELECT文を記述せよ。 # 副照会:商品の平均受注個数を求めるSELECT文 # 主照会:商品コード別に受注個数合計を求め、受注個数合計 > 平均受注個数であれば、仕入れ先を表示 # # 3、1月と2月に\50,000以上の注文があった顧客からの3月受注額を照会するSELECT文を記述せよ。 # 副照会:4月と5月に受注額合計が共に50000以上であるという条件をみたす顧客を照会 # 主照会:顧客別に6月の受注額合計を求めるSELECT文。 # # よろしくお願いいたします・ # 名前はわかっているが、コードが不明な商品の受注明細を照会する(_商品名,_受注明細) :- 商品名(_商品コード,_商品名), 受注明細(_顧客コード,_扱店コード,_受注日,_納品予定日,_商品コード,_荷姿,_数量,_単価,_金額,_入力時刻). '1月と2月に50,000以上の注文があった顧客からの3月受注額を照会する'(_顧客コード,_受注額) :- '1月と2月に50,000以上の注文があった顧客'(_顧客コード), findsum(_金額,(受注明細(_顧客コード,_,_受注日,_,_,_,_,_,_金額,_),sub_atom(_受注日,4,2,_,'03')),_受注額). '1月と2月に50,000以上の注文があった顧客'(_顧客コード) :- '1月に50000以上の注文があった顧客'(_1月に50000以上注文があった顧客コードならび), '2月に50000以上の注文があった顧客'(_2月に50000以上注文があった顧客コードならび), 積集合(_1月に50000以上注文があった顧客コードならび,_2月に50000以上注文があった顧客コードならび,_1月と2月に50000以上の注文があった顧客コードならび), member(_顧客コード,_1月と2月に50000以上の注文があった顧客コードならび). '1月に50000以上の注文があった顧客'(_1月に50000以上注文があった顧客コードならび), findsetof(_顧客番号,(受注明細(_顧客コード,_,_受注日,_,_,_,_,_,_金額,_),sub_atom(_受注日,5,2,'01')),_1月に注文があった顧客コードならび), findall(_顧客番号,( findsum(_金額,( member(_顧客番号,_1月に注文があった顧客コードならび), 受注明細(_顧客コード,_,_受注日,_,_,_,_,_,_金額,_), sub_atom(_受注日,4,2,_,'01')), _合計金額), _合計金額 > 50000), _1月に50000以上注文があった顧客コードならび),!. '2月に50000以上の注文があった顧客'(_2月に50000以上注文があった顧客コードならび), findsetof(_顧客番号,(受注明細(_顧客コード,_,_受注日,_,_,_,_,_,_金額,_),sub_atom(_受注日,5,2,'02')), _2月に注文があった顧客コードならび), findall(_顧客番号,( findsum(_金額,( member(_顧客番号,_2月に注文があった顧客コードならび), 受注明細(_顧客コード,_,_受注日,_,_,_,_,_,_金額,_), sub_atom(_受注日,4,2,_,'02')), _合計金額), _合計金額 > 50000), _2月に50000以上注文があった顧客コードならび),!. /* 平均受注個数を超える商品に仕入れ先を照会する(_商品コード,_顧客コード) :- 商品ごとの平均受注個数を調べる(_商品ごとの平均受注個数ならび), 平均受注個数を超える商品に仕入れ先を照会する(_商品ごと平均受注個数ならび,_商品コード,_顧客コード). 商品ごとの平均受注個数を調べる(_商品ごとの平均受注個数ならび) :- findall(_商品コード,商品名(_商品コード),_商品コードならび), findsetof([_顧客番号,_商品コード], 受注明細(_顧客コード,_,_,_,_商品コード,_,_,_,_,_), _顧客コード・商品コードならび), 荷姿変換(_荷姿,_数量,_数量_1,_単価,_単価_1,_金額,_金額_1), 荷姿変換(_荷姿,_数量,_数量,_単価,_単価,_金額,_金額) :- つまり荷姿変換は行わない. つまり荷姿変換は行わない. */ % 以下のサイトは # 出典:: http://pc12.2ch.net/test/read.cgi/tech/1269438098/901 # # ../test/read.cgi/tech/1269438098/900 # こんな入力・出力例でいいの? # # Input: # # 2 # 1,1,murayama # 1,2,sugano # 3,3,koizumi # 3,4,abe # 5,5,hatoyama # 6,6,ozawa # # Output: # # #1 # Rep. Name: murayama # Rep. Attendance: 1 # Group: 001 # Group Attendance: 2 # # #2 # Rep. Name: koizumi # Rep. Attendance: 1 # Group: 003 # Group Attendance: 2 # 代表の生徒の名前、代表者の出席回数、グループメンバーの出席回数、グループの全体の出席回数の上位x番だけ出力する(_代表の生徒の名前,_代表者の出席回数,_グループメンバーの出席回数上位5位,_グループ全体の出席回数上位5位) :- findall([_代表の個人ID,_名前],生徒(_代表の個人ID,_代表の個人ID,_名前),_代表の個人ID・名前ならび), member([_代表の個人ID,_名前],_代表の個人ID・名前ならび), 代表者の出席回数(_代表の個人ID,_代表者の出席回数), グループメンバーの出席回数(_代表のID,_グループメンバーの出席回数ならび), グループメンバーの出席回数上位5位(_グループメンバーの出席回数ならび,グループメンバーの出席回数上位5位), グループ全体の出席回数(_代表のID,_グループ全体の出席回数ならび), グループ全体の出席回数上位5位(_グループ全体の出席回数ならび,グループ全体の出席回数上位5位). 代表者の出席回数(_代表の個人ID,_代表者の出席回数) :- count(出席者(_代表の個人ID),_代表者の出席回数). グループメンバーの出席回数(_代表のID,_グループメンバーの出席回数ならび) :- findsetof(_個人ID,(生徒(_代表のID,_個人ID,_),\+(_代表のID=_個人のID)),_グループメンバーならび), findall([_出席回数,_個人ID], ( member(_個人ID,_グループメンバーならび), count(出席者(_個人ID),_出席回数)), _グループメンバーの出席回数ならび),!. グループ全体の出席回数(_代表のID,_グループメンバーの出席回数ならび) :- findsetof(_個人ID,生徒(_代表のID,_個人ID,_),_グループメンバーならび), findall([_出席回数,_個人ID], ( member(_個人ID,_グループメンバーならび), count(出席者(_個人ID),_出席回数)), _グループ全体の出席回数ならび),!. グループメンバーの出席回数上位N位(N,_グループメンバーの出席回数ならび,_グループメンバーの出席回数上位5位) :- 大きい順に上位N位(N,_グループメンバーの出席回数ならび,_グループメンバーの出席回数上位5位). グループ全体の出席回数上位N位(N,_グループ全体の出席回数ならび,_グループ全体の出席回数上位5位) :- 大きい順に上位N位(N,_グループ全体の出席回数ならび,_グループ全体の出席回数上位5位). 大きい順に上位N位(L1,L) :- sort(L1,L2), reverse(L2,L3), length(L,N), append(L,_,L3),!. 大きい順に上位N位(L1,L) :- sort(L1,L2), reverse(L2,L),!. キーボードから代表者のID,個人のID,名前を入力するものとし、グループメンバーは代表者のIDでのみで関連付けされる :- キーボードから代表者のID,個人のID,名前を入力する(_代表者のID,_個人のID,_名前), assertz(生徒(_代表者のID,_個人のID,_名前)), キーボードから代表者のID,個人のID,名前を入力するものとし、グループメンバーは代表者のIDでのみで関連付けされる. キーボードから代表者のID,個人のID,名前を入力するものとし、グループメンバーは代表者のIDでのみで関連付けされる. キーボードから代表者のID,個人のID,名前を入力する(_代表者のID,_個人のID,_名前) :- get_split_line([','],[_代表者のID,_個人のID,_名前]). 出席者の入力 :- get_line(Line), atom_to_term(Line,_個人ID,_), integer(_個人ID), assertz(出席者(_個人ID)), 出席者の入力. 出席者の入力. % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/933 # # DEFENDANT  GUILT  JOROR # -----------+-------+-------- # HOGE      | 1     | FOO # HOGE      | 0     | BAR # HOGE      | 1     | BAZ # FUGA     | 1     | FOO # FUGA     | 1     | BAR # FUGA     | 1     | BAZ     (T_JUDGEテーブル) # # 上記のテーブルにDEFENDANTで絞込をかけた結果、GUILTに一つでも0がある場合 # 1行も取得せず、全部1の場合はそのまま一覧を返す場合どのようなSQLを書けば # よいでしょうか?この場合、HOGEで絞り込むと0行、FUGAなら3行と言う具合です。 # # DBMSはMySQL5.0.67です。 # # 'T_JUDGEテーブル'('HOGE',1,'FOO'). 'T_JUDGEテーブル'('HOGE',0,'BAR'). 'T_JUDGEテーブル'('HOGE',1,'BAZ'). 'T_JUDGEテーブル'('FUGA',1,'FOO'). 'T_JUDGEテーブル'('FUGA',1,'BAR'). 'T_JUDGEテーブル'('FUGA',1,'BAZ'). 'T_JUDGEテーブルにDEFENDANTで絞込をかけた結果、GUILTに一つでも0がある場合1行も取得せず、全部1の場合はそのまま一覧を返す'(_DEFENDANT,_GUILT,_JOROR) :- findsetof(_DEFENDANT,('T_JUDGEテーブル'(_DEFENDANT,_GUILT,_JOROR),\+(_GUILT=0)),L1), findsetof(_DEFENDANT,('T_JUDGEテーブル'(_DEFENDANT,_GUILT,_JOROR),_GUILT=0),L2), 差集合(L1,L2,L3), member(_DEFENDANT,L3), T_JUDGEテーブル(_DEFENDANT,_GUILT,_JOROR). % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/922 # # 売上データベースがあって、主テーブルの項目は、売上番号、得意先名、日付。 # 明細テーブルの項目は、明細番号、売上番号、商品、個数。売上番号で1対多でリンクしています。 # 商品(複数)と日付を指定して、 商品名 個数計 得意先計の一覧を出力したいです。 # ただし得意先名は同名を1とカウントしたいのです。 # SELECT 明細.商品, Sum(明細.個数) AS 個数計, Count(主.得意先) AS 得意先計 # FROM 主 INNER JOIN 明細 ON 主.売上番号 = 明細.売上番号 # WHERE 主.日付 Between '5/1/2010' And '5/4/2010' # GROUP BY 明細.商品 # HAVING 明細.商品='えんぴつ' or 明細.商品='筆'; # とすると、得意先計が複数カウント(同名は1とならない)してしまいます。 # どのように書いたらよいのでしょうか。 # '商品(複数)と日付を指定して、 商品名 個数計 得意先計の一覧を出力する'(_商品ならび,_日付下限,_日付上限,X) :- findall([_商品,_個数,_得意先名],(主(_売上番号,_得意先名,_日付),明細(_明細番号,_売上番号,_商品,_個数),member(_商品,_商品ならび),_日付@>=_日付下限,_日付@=<_日付上限),_選択ならび), findsetof([_商品,_得意先名],member([_商品,_個数,_得意先名],_選択ならび),_鍵ならび), findall([_商品,_個数計,_得意先名],(member([_商品,_得意先名],_鍵ならび),findsum(_個数,member([_商品,_個数,_得意先名],_選択ならび),_個数計)),X). % 以下のサイトは findsort(_集約項,_集約対象項,P,_射影項) :- findsetof(_集約項,P), append(_集約対象項,_射影項,L1), findall(L1,P,L2), sort(L2,L3), append(_集約対象項,_射影項,L), member(L,L3). findrsort(_集約項,_集約対象項,P,_射影項) :- findsetof(_集約項,P), append(_集約対象項,_射影項,L1), findall(L1,P,L2), sort(L2,L3), reverse(L3,L4), append(_集約対象項,_射影項,L), member(L,L4). findsort(_集約対象項,P,_射影項) :- append(_集約対象項,_射影項,L1), findall(L1,P,L2), sort(L2,L3), append(_集約対象項,_射影項,L), member(L,L3). findrsort(_集約対象項,P,_射影項) :- append(_集約対象項,_射影項,L1), findall(L1,P,L2), sort(L2,L3), reverse(L3,L4), append(_集約対象項,_射影項,L), member(L,L4). findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L). findsetof(A,B) :- findall(A,B,C), setof(A,member(A,C),D), member(A,D). % 以下のサイトは # 出典 :: SQL質疑応答スレ 9問目 #817 # [テーブルA] # ID, AGE, GROUP # --- ---- ----- # 1 , 10, A # 2 , 20, A # 3 , 30, A # 4 , 20, B # 5 , 40, B # 6 , 60, B # 7 , 10, C # 8 , 30, C # 9 , 50, C # 10 , 70, C # # ↑のテーブルから、 # 各GROUP毎にAGEで順位付けした結果を取得したいです。 # # <結果> # # ID, AGE, GROUP, RANK # --- ---- ----- ----- # 1 , 10, A 1 # 2 , 20, A 2 # 3 , 30, A 3 # 4 , 20, B 1 # 5 , 40, B 2 # 6 , 60, B 3 # 7 , 10, C 1 # 8 , 30, C 2 # 9 , 50, C 3 # 10 , 70, C 4 # # # GROUP BYを使ってみたのですが、 # どうも見当違いのSQLになってしまって。。 # # すいませんが、どのようなSQLを書けばよいかご教示ください。 # テーブルA(8,30,'C'). テーブルA(4,20,'B'). テーブルA(1,10,'A'). テーブルA(10,70,'C'). テーブルA(2,20,'A'). テーブルA(9,50,'C'). テーブルA(6,60,'B'). テーブルA(7,10,'C'). テーブルA(3,30,'A'). テーブルA(5,40,'B'). '各GROUP毎にAGEで順位付けした結果を取得'(X) :- 'GROUPならび'(_GROUPならび), '各GROUP毎にAGEで順位付けした結果を取得'(_GROUPならび,X). 'GROUPならび'(_GROUPならび) :- setof(_GROUP,[_ID,_AGE,_GROUP] ^ テーブルA(_ID,_AGE,_GROUP),_GROUPならび). '各GROUP毎にAGEで順位付けした結果を取得'([],[]) :- !. '各GROUP毎にAGEで順位付けした結果を取得'(_GROUPならび,X) :- '各GROUP毎にAGEで順位付けした結果を取得して行く'(_GROUPならび,X). '各GROUP毎にAGEで順位付けした結果を取得して行く'([_GROUP|R1],X) :- '各GROUP毎にAGEで順位付けした'(_GROUP,L4), '各GROUP毎にAGEで順位付けした結果を取得'(R1,Y), append(L4,Y,X). '各GROUP毎にAGEで順位付けした'(_GROUP,L4) :- '_GROUPのデータの_AGEを整列鍵に'(_GROUP,L2), '整列し_AGEで順位付けした'(L2,L4). '_GROUPのデータの_AGEを整列鍵に'(_GROUP,L2) :- findall([_AGE,_GROUP,_ID],テーブルA(_ID,_AGE,_GROUP),L2). '整列し_AGEで順位付けした'(L2,L4) :- 整列(L2,L3), 'GROUP内の順位づけ'(1,L3,L4). 'GROUP内の順位づけ'(_,[],[]) :- !. 'GROUP内の順位づけ'(N,[[_AGE,_GROUP,_ID]|R1],[[_ID,_AGE,_GROUP,N]|R2]) :- N2 is N + 1, 'GROUP内の順位づけ'(N2,R1,R2). 整列(L1,L2) :- 先頭要素を軸要素として重複要素を許すクイックソート(L1,L2). 先頭要素を軸要素として重複要素を許すクイックソート([],[]). 先頭要素を軸要素として重複要素を許すクイックソート([_軸要素|L1],L2) :- 軸要素に対する大小で二つのならびに分割する(_軸要素,L1,_軸要素と等しいかより小さい要素のならび,_軸要素より大きい要素のならび), 先頭要素を軸要素として重複要素を許すクイックソート(_軸要素と等しいかより小さい要素のならび,L2_1), 先頭要素を軸要素として重複要素を許すクイックソート(_軸要素より大きい要素のならび,L2_2), append(L2_1,[_軸要素|L2_2],L2). 軸要素に対する大小で二つのならびに分割する(_,[],[],[]). 軸要素に対する大小で二つのならびに分割する(_軸要素,[_要素|_残りならび],[_要素|_軸要素と等しいかより小さい要素のならび],_軸要素より大きい要素のならび) :- _軸要素 @>= _要素, 軸要素に対する大小で二つのならびに分割する(_軸要素,_残りならび,_軸要素と等しいかより小さい要素のならび,_軸要素より大きい要素のならび). 軸要素に対する大小で二つのならびに分割する(_軸要素,[_要素|_残りならび],_軸要素と等しいかより小さい要素のならび,[_要素|_軸要素より大きい要素のならび]) :- _軸要素 @< _要素, 軸要素に対する大小で二つのならびに分割する(_軸要素,_残りならび,_軸要素と等しいかより小さい要素のならび,_軸要素より大きい要素のならび). % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/789 # # [TABLE1] # # key1 key2 data # ------------------------------------ # AAA 01 zzz # AAA 02 yyy # BBB 01 xxx # BBB 03 www # CCC 02 vvv # DDD 03 uuu # # # # [TABLE2] # key1 data # ------------------------------------ # MMM 01&02 # NNN 01only # OOO 02only # # # このようなテーブルから、以下のデータを抽出したいです。 # # # # key1 key2 data1 data2 # --------------------------------------------- # AAA 01 zzz 01&02 # BBB 01 xxx 01only # CCC 02 vvv 02only # # # TABLE1のKEYはkey1とkey2です。 # このTABLE1から、各key1に対して一意にデータを抽出します。 # 抽出はkey2の値が01と02のもののみを対象とし、 # 01があれば01のデータを、なければ02のデータを引っ張ってきます(data1)。 # # さらに、各key1におけるkey2の状況?をdata2として付加したいです。 # ここではTABLE2に格納されていることにしましたが、 # 条件文で単に文字列を設定するのでも構いません。 # # SQLServer2000を使用します。 # どのようなSQLを書けばよいでしょうか? # よろしくお願いします。 # # 'TABLE1から、各key1に対してkey2の値が01と02のもののみを対象とし、01があれば01のデータを、なければ02のデータを抽出し各key1におけるkey2の状況をdata2として付加してTABLE2に追加して出力' :- findsetof(_key1,('TATLE1'(_key1,_key2,_data),key2の対象は01か02のみ(_key2)),L1), 見出し, member(_key1,L1), '01があれば01のデータを、なければ02のデータを抽出し各key1におけるkey2の状況をdata2として付加'(_key1,L2), write_formatted('%t %t %t %t\n',L2), fail. 'TABLE1から、各key1に対してkey2の値が01と02のもののみを対象とし、01があれば01のデータを、なければ02のデータを抽出し各key1におけるkey2の状況をdata2として付加してTABLE2に追加して出力'. key2の対象は01か02のみ('01') :- !. key2の対象は01か02のみ('02') :- !. '01があれば01のデータを、なければ02のデータを抽出し各key1におけるkey2の状況をdata2として付加'(_key1,X) :- findall([_key1,_key2,_data],'01があれば01のデータを、なければ02のデータを抽出し'(_key1,_key2,_data),L), 各key1におけるkey2の状況(L,X), X = [_,_,_,TABLE2data], assertz('TABLE2'(_key1,TABLE2data)),!. '01があれば01のデータを、なければ02のデータを抽出し'(_key1,'01',_data) :- 'TABLE1'(_key1,'01',_data). '01があれば01のデータを、なければ02のデータを抽出し'(_key1,'02',_data) :- 'TABLE1'(_key1,'02',_data). 各key1におけるkey2の状況([[_key1,'01',_data]],[_key1,'01',_data,'01only']) :- !. 各key1におけるkey2の状況([[_key1,'02',_data]],[_key1,'02',_data,'02only']) :- !. 各key1におけるkey2の状況([[_key1,'01',_data],[_key1,'02',_]],[_key1,'01',_data,'01&02']) :- !. 各key1におけるkey2の状況([[_key1,'02',_],[_key1,'01',_data]],[_key1,'01',_data,'01&02']) :- !. 見出し :- write('key1 key2 data1 data2 \n'-----------------------------------\n'). % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/751 # # # 年月日と金額を持ったテーブルがあります。前年度合計と今年度合計を出したいのですが、 # # 年月日 金額 # 20080402 200 # 20080404 200 # 20090401 100 # 20090401 500 # 20090404 300 # # とあった場合、↓にしたいです # # 年月日 今年度合計 前年度合計 # 20090401 600 0 # 20090402 0 200 # 20090404 300 200 # # 両年度金額が無い場合は表示無しで、年月日は8桁の数値型です。 # うるう年は考慮しなくて構いません。 年月日と金額を持ったテーブルがあります。前年度合計と今年度合計を出したいのですが :- 初めに重複しない年月日ならびを取り出します(_重複しない年月日ならび), 見出しです, 重複しない年月日ならびから順に年月日を取り出し今年度合計と前年度合計を計算して表示します(_重複しない年月日ならび). 初めに重複しない年月日ならびを取り出します(_重複しない年月日ならび) :- findsetof(_年月日,テーブル(_年月日,_),_重複しない年月日ならび). 見出しです :- write_formatted('%8s %10s %10s\n',[年月日,今年度合計,前年度合計]). 重複しない年月日ならびから順に年月日を取り出し今年度合計と前年度合計を計算して表示します([]) :- !. 重複しない年月日ならびから順に年月日を取り出し今年度合計と前年度合計を計算して表示します([_年月日|R]) :- _前年同日 is _年月日 - 10000, ある年月日の金額合計(_年月日,_今年度合計), その前年同日の金額合計(_前年同日,_前年度合計), 年月日と今年度合計と前年度合計を表示します(_年月日,_今年度合計,_前年度合計), 重複しない年月日ならびから順に年月日を取り出し今年度合計と前年度合計を計算して表示します(R). ある年月日の金額合計(_年月日,_金額合計) :- findsum(_金額,(テーブル(_年月日,_金額),_金額合計). その前年同日の金額合計(_前年同日,_前年同日金額合計) :- findsum(_前年同日金額,(テーブル(_前年同日,_前年同日金額),_前年同日金額合計). 年月日と今年度合計と前年度合計を表示します(_年月日,_今年度合計,_前年度合計) :- write_formatted('%t %10.0f %10.0f\n',[_年月日,_今年度合計,_前年度合計]). % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/713 # # # A B C # - - - # 1 3 a # 1 5 b # 2 8 c # 2 4 d # 2 6 e # 3 3 f # 3 1 g # # 上記のようなSAMPLEテーブルがあるとき、 # AごとにBが最大となるレコードのCを得たい、 # つまり、抽出結果を下記のようにしたいと考えています。 # # A C # - - # 1 b # 2 c # 3 f 'SAMPLE'('1','3','a'). 'SAMPLE'('1','5','b'). 'SAMPLE'('2','8','c'). 'SAMPLE'('2','4','d'). 'SAMPLE'('2','6','e'). 'SAMPLE'('3','3','f'). 'SAMPLE'('3','1','g'). 'AごとにBが最大となるレコードのCを得る'(X,Y) :- findsetof(A,'SAMPLE'(A,_,_),L), member(A,L), findmax([B,A,C],'SAMPLE'(A,B,C),[_,X,Y]). findsetof(A,B,C) :- findall(A,B,L), setof(A,member(A,L),C). findmax(A,P,X) :- findall(A,P,L), sort(L,L2), last(L2,X). % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/594 # #(問) # ID | DATE     | DATA # --+----------+----- # 1 | 2007-11-11 | aaa # 2 | 2007-11-11 | bbb # 1 | 2007-11-10 | ccc # 3 | 2007-11-12 | ddd # 3 | 2007-11-11 | eee # 4 | 2007-11-10 | fff # 1 | 2007-11-12 | ggg # # このようなテーブルから、各idに対して最新の5件だけ抽出しなさい 各idに対して最新の5件だけ抽出する(_テーブル名,L) :-    functor(Q,_テーブル名,3),    重複を排除したidならびの抽出(ID,Q,L1),    整列(L1,L2),    findall(L3,(member(ID,L1),idに対して最新の5件だけ抽出する(ID,Q,L3)),L). idに対して最新の5件だけ抽出する(ID,Q,L) :-    目標Qの第一引数はID(ID,Q),    idに対して組ならびを抽出する(Q,L3),    最新の5件だけ抽出する(L3,L). idに対して組ならびを抽出する(Q,L3) :-    findall(L1,(call(Q),引数部分だけ抽出する(Q,L1)),L2),    整列(L2,L3),!. 重複を排除したidならびの抽出(ID,Q,L1) :- setof(ID,Q,L1). 目標Qの第一引数はID(ID,Q) :- arg(1,Q,ID),!.    引数部分だけ抽出する(Q,L1) :- Q =.. [_|L1]. 最新の5件だけ抽出する(L3,L) :-    length(L,5),    append(_,L,L3),!. 最新の5件だけ抽出する(L,L) :- !. % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/521 # # 販売集計処理について教えてください。 # 商品テーブル # 商品名 販売本数 # ─── ──── # お菓子 # お弁当 # 飲み物 # # 販売履歴テーブル # 商品名 # ─── # 商品テーブルの各商品が、販売履歴テーブルに何件ずつあるかを集計し、 # 商品テーブルの販売本数に記録させたいと思っております(日次処理)。 販売履歴(飲み物). 販売履歴(お菓子). 販売履歴(お弁当). 販売履歴(お菓子). 販売履歴(お菓子). 販売履歴(飲み物). 販売履歴(お弁当). 販売履歴(お弁当). 販売集計処理 :-   一意な商品名ならびを得る(L),   商品テーブルに追加(L). 一意な商品名ならびを得る(L) :- setof(_商品名,販売履歴(_商品名),L). 商品テーブルに追加([]) :- !. 商品テーブルに追加([_商品名|R]) :-   count(販売履歴(_商品名),_販売本数),   assertz(商品(_商品名,_販売本数)),   商品テーブルに追加(R). 販売履歴(飲み物). % 以下のサイトは % *** user: findsetof / 3 *** findsetof(A,B,L) :- findall(A,B,C), setof(A,member(A,C),L) . % *** user: findsetof / 3 *** findsetof(A,B,L) :- B =.. [_|L1], setof(A,L1 ^ B,L). % *** user: findsetof / 3 *** findsetof(A,B,L) :- term_variables(B,VL), setof(A,VL ^ B,L) % 以下のサイトは # 出典:: http://pc12.2ch.net/test/read.cgi/tech/1260532772/678 # # [1] 授業単元: 基礎プログラミングおよび演習 # [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10352.txt # # あるWebページに対する24時間分の閲覧者の名前、閲覧開始時刻および閲覧継続時間を表す「閲覧データ」があるとしよう。 # 1名以上の閲覧データから、閲覧している人数がもっとも多い30分刻みでの時間帯を求め、そのときの閲覧者名を印字する # プログラムを作成せよ。状況によっては日をまたぐこともあるが、ここではどの時間帯に閲覧が多いのかを知りたいので # 日の違いは考えなくてよい。各閲覧データは標準入力から、 # # 閲覧者名 # 閲覧開始時刻 閲覧継続時間 # # の2行で与えられる。ここで閲覧者名は英小文字2文字の後に4桁の数字が続く。閲覧開始時刻は24時間制での時を100倍し、 # 分を加えた数を表す4桁の数字、閲覧継続時間は分を表す高々3桁の数字である。時刻および時間は30分刻み(つまり0分か30分) # である。たとえば、 # # ku7535 # 0130 60 # # は、名前がku7535、開始時刻が1時30分、継続時間が60分、つまり1時30分から2時30分直前まで閲覧していたことを表す。 # まず閲覧データに対する構造体 user を定義し、それを要素とする大きさNの大域的な配列 users を用意せよ(Nはマクロ # である)。次に、N人分のデータを読み込むか、閲覧者名としてアスタリスク(*)が与えられるまで、標準入力から閲覧データを # 読み込み、配列 users にセットするとともに閲覧データを返す関数 int read_users(void) を作成せよ。最後に配列 users の # 先頭からn個の閲覧データを対象に、24時間中で最大人数が閲覧している30分刻みでの時間帯と、そのときの閲覧者名を印字 # する関数 void print_prime_time(int n) を定義せよ。ただし最大閲覧者数となる時間帯は一般に複数あることに注意すること。 # さらに以下のmain関数と組み合わせてプログラムを作成せよ。 標準入力から閲覧履歴読み込む(_閲覧履歴ならび) :- get_lines(Lines), 閲覧者情報の取得(Lines,_閲覧履歴ならび), 閲覧者履歴の登録(_閲覧者履歴ならび),!. 閲覧履歴の取得と登録([],[]) :- !. 閲覧履歴の取得と登録([_閲覧者名,B|R1],[[_閲覧者名,_閲覧開始時刻,_閲覧継続時間]|R2]) :- split(B,[' '],[_閲覧開始時刻,_閲覧継続時間]), assertz(閲覧履歴(_閲覧者名,_閲覧開始時刻,_閲覧継続時間)), 閲覧履歴の取得と登録(R1,R2),!. 先頭からn個の閲覧データを対象に、24時間中で最多人数が閲覧している30分刻みでの時刻と、そのときの閲覧者名を印字(N,_時,_分,_閲覧者ならび) :- 先頭からn個の閲覧データを対象に、24時間中で最多人数が閲覧している30分刻みでの時刻と、そのときの閲覧者名(N,_閲覧履歴ならび,_時刻,_閲覧者ならび), _時 is _時刻 // 100, _分 is _時刻 mod 100, concat_atom(_閲覧者ならび,' ',_閲覧者ならび表示), write_formatted('最多閲覧時間 %t時%t分から %t\n',[_時,_分,_閲覧者ならび表示]). 先頭からn個の閲覧データを対象に、24時間中で最多人数が閲覧している30分刻みでの時刻と、そのときの閲覧者名(N,_閲覧履歴ならび,_時刻,_閲覧者ならび) :- 先頭からn個の閲覧データを対象に(N,_閲覧履歴ならび,_先頭からn個のデータ), 閲覧分布ならびを作る(_先頭からn個のデータ,_履歴分布ならび), 最多閲覧者時刻(_履歴分布ならび,_最多閲覧者時刻ならび), member(_時刻,_最多閲覧者時刻), setof(_閲覧者名,member([_閲覧者名,_時刻,_],_履歴分布ならび),_閲覧者ならびの一). 先頭からn個の閲覧データを対象に(N,_閲覧履歴ならび,_先頭からn個のデータ) :- length(_先頭からn個のデータ,N), append(_先頭からn個のデータ,_,_閲覧履歴ならび),!. 閲覧分布ならびを作る([],[]) :- !. 閲覧分布ならびを作る([[_閲覧者名,_閲覧開始時刻,_閲覧継続時間]|R1],X) :- 閲覧継続時間を30分ごとに刻む(_閲覧者名,_閲覧開始時刻,_閲覧継続時間,L), 閲覧分布ならびを作る(R1,Y), append(L,Y,X). 閲覧継続時間を30分ごとに刻む(_,_,0,[]) :- !. 閲覧継続時間を30分ごとに刻む(_閲覧者名,_閲覧開始時刻,_閲覧継続時間,[[_閲覧者名,_閲覧開始時刻,30]|R]) :- 次の30分を閲覧開始時刻とする(_閲覧開始時刻,_次の閲覧開始時刻), _閲覧継続時間2 is _閲覧継続時間 - 30, 閲覧継続時間を30分ごとに刻む(_閲覧者名,_次の閲覧開始時刻,_閲覧継続時間2,R),!. 次の30分を閲覧開始時刻とする(2330,0) :- !. 次の30分を閲覧開始時刻とする(_閲覧開始時刻,_次の閲覧開始時刻) :- 30 is _閲覧開始時刻 mod 100, _次の閲覧開始時刻 is _閲覧開始時刻 - 30 + 100,!. 次の30分を閲覧開始時刻とする(_閲覧開始時刻,_次の閲覧開始時刻) :- 0 is _閲覧開始時刻 mod 100, _次の閲覧開始時刻 is _閲覧開始時刻 + 30,!. 最多閲覧者時刻(_履歴分布ならび,_最多閲覧者時刻ならび) :- findall(L1,setof(_閲覧開始時刻,member([_,_閲覧開始時刻,_],_履歴分布ならび),L1),L2), 最多閲覧者時刻の二(L2,_履歴分布ならび,L3), findmax(Count,member([Count,_,_],L3),Max), findall([_閲覧開始時刻,_閲覧者ならび],member([Max,_閲覧開始時刻,_閲覧者ならび],L3),_最多閲覧者時刻ならび). 最多閲覧者閲覧開始時刻の二([],_,[]) :- !. 最多閲覧者閲覧開始時刻の二([[_閲覧開始時刻]|R1],_履歴分布ならび,[[Count,_閲覧開始時刻,L1]|R2]) :- findall([_閲覧者名,_閲覧開始時刻],member([_閲覧者,_閲覧開始時刻,_],_履歴分布ならび),L1), length(L1,Count), 最多閲覧者閲覧開始時刻の二(R1,_履歴分布ならび,R2). % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/330 # # ■テーブルデータ # ・IDテーブル   # ・マスターテーブル # 1, 2, 3      # 1, A # 1, 2, 4      # 2, A # 5, -1, -1     # 3, A # -1, 1, 2      # 4, B # 2, -1, 5      # -1, Z # # ■やりたいこと # マスターテーブルを参照してIDテーブルの各IDにクラス(A, B, Z)を振り当て、 # 各レコードが同一クラスに属するか否かを判定し、同一クラスに属するレコード # だけクラス付で抽出する。 # ここで「同一クラスに属する」とは、クラスA, B, Zからなるグループに対して、 # Z以外の要素が一種類しか存在しない場合に、グループはそのクラスに属すると定める。 # 最終的に欲しいデータは # # 1, 2, 3, A # 5, -1, -1, B # -1, 1, 2, A # # となります。よろしくお願いします。 'クラスA, B, Zからなるグループに対して、Z以外の要素が一種類しか存在しない' :- 'ID'(L), setof(U,(member(ID,L),マスター(ID,U),\+(U='Z')),[_クラス]), concat_atom(L,',',S), write_formatted('%t,%t\n',[S,_クラス]), fail. 'クラスA, B, Zからなるグループに対して、Z以外の要素が一種類しか存在しない'. % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/330 # # ■テーブルデータ # ・IDテーブル   # ・マスターテーブル # 1, 2, 3      # 1, A # 1, 2, 4      # 2, A # 5, -1, -1     # 3, A # -1, 1, 2      # 4, B # 2, -1, 5      # -1, Z # # ■やりたいこと # マスターテーブルを参照してIDテーブルの各IDにクラス(A, B, Z)を振り当て、 # 各レコードが同一クラスに属するか否かを判定し、同一クラスに属するレコード # だけクラス付で抽出する。 # ここで「同一クラスに属する」とは、クラスA, B, Zからなるグループに対して、 # Z以外の要素が一種類しか存在しない場合に、グループはそのクラスに属すると定める。 # 最終的に欲しいデータは # # 1, 2, 3, A # 5, -1, -1, B # -1, 1, 2, A # # となります。よろしくお願いします。 'クラスA, B, Zからなるグループに対して、Z以外の要素が一種類しか存在しない' :- 'ID'(Id_1,Id_2,Id_3), マスター(Id_1,_クラス1), マスター(Id_2,_クラス2), マスター(Id_3,_クラス3), setof(U,(member(U,[_クラス1,_クラス2,_クラス3]),\+(U='Z')),[_クラス]), write_formatted('%t,%t,%t,%t\n',[Id_1,Id_2,Id_3,_クラス]), fail. 'クラスA, B, Zからなるグループに対して、Z以外の要素が一種類しか存在しない'. % 以下のサイトは # 出典:: http://pc12.2ch.net/test/read.cgi/tech/1258158172/771 # # [1] 授業単元:C言語演習 # [2] 問題文(含コード&リンク):これに全て記載 http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10245.c # # 問題 # graph.cの関数print_graph_memory()を参考に、グラフの連結であるか否かの判定を行うプログラムを作成せよ。 # または連結な場合は、一筆書きできるか否かの判定を行うようにせよ。 # sample5.dimacs、sample6.dimacs、sample7.dimacsを連結判定・一筆書き判定せよ。 有向グラフに於いて一筆書き(A,_経路) :- setof((B,C),有向グラフ(B,C),L), length(L,Len), 有向グラフに於いて一筆書き(A,A,Len,[],_経路). 有向グラフに於いて一筆書き(A,A,Len,L,[]) :- length(L,Len),!. 有向グラフに於いて一筆書き(A,S,Len,L,[A|R]) :- 有向グラフ(A,B), \+(member((A,B),L)), 有向グラフに於いて一筆書き(B,S,Len,[(A,B)|L],R). % 以下のサイトは # 出典:: http://pc11.2ch.net/test/read.cgi/db/1252492296/314 # # ユーザーが複数の資格を持っているというありがちなテーブル構成があるのですが、 # 「資格1または資格2を持っているユーザー」の検索はできるのですが、 # 「資格1と資格2」を両方持っているユーザー」の検索ができません。 # # データベースはpostgresです。 # # テーブル構成はこんな感じです。 # # ユーザーテーブル # [ユーザーID、名前] # 001,山田 # 002,鈴木 # # 資格テーブル # [ユーザーID、資格] # 001,資格1 # 001,資格2 # 002,資格1 # ユーザーID('001',山田). ユーザーID('002',鈴木). 資格('001',資格1). 資格('001',資格2). 資格('002',資格1). '「資格1と資格2」を両方持っているユーザー'(X) :- setof(_名前,[_ユーザーID,_名前] ^ (資格(_ユーザーID,資格1),資格(_ユーザーID,資格2),ユーザーID(_ユーザーID,_名前)),X). % 以下のサイトは %% TECHINIQUES OF PROLOG PROGRAMMING by T. Van Le, ph D. %% topo_sort(Graph,List) :- createq(Graph,Queue), t_sort(Graph,Queue,List). createq(G,Q-Qt) :- setof(X,minimal(X,G),L), append(L,Qt,Q). minimal(X,G) :- member(X:Y,G), not(member(A:X,G)). t_sort([],[]-[],[]) :- !. t_sort(G,[X|Q]-Qt,[X|L]) :- find_successors(X,G,G1,Qt-Qs), t_sort(G1,Q-Qs,L). find_successors(X,G,G1,Q-Qt) :- select(X:Y,G,G2),!, (member(A:Y,G2),!, Q = Q1; Q = [Y|Q1]), find_successors(X,G2,G1,Q1-Qt). find_successors(_,G,G,Q-Q). select(H,[H|T],T). select(X,[H|T],[T|T1]) :- select(X,T,T1). graph([ics:is1,dma:ps2,dma:se1,dsa:ps2,dsa:se1, dsa:co1,is1:is2,is1:ps2,is1:se1,co1:co2,is2:pm, is2:is3,ps2:is3,co2:os,pm:cp,is3:cp,os:cp]). ?- graph(G),topo_sort(G,L). L = [dma,dsa,ics,co1,is1,co2,is2,ps2,se1,os,pm,is3,cp] ->