2008-05-01から1ヶ月間の記事一覧

先頭から順番に処理

隣り合う二項の差です。 main = do print $ diff [3, 1, 4, 1, 5, 9, 2, 6, 5] diff :: [Int] -> [Int] diff [] = [] diff (_:[]) = [] diff (x:xs) = (head xs - x) : (diff xs)

複数のテーブルの結合を行う(2)

SQL

GROUP BYとの組み合わせ。普通に書けば良いです。 SELECT d.DepartmentName AS 部門名 , AVG(s.Amount) AS 部門別平均給与額 FROM Salary AS s JOIN BelongTo AS b ON s.EmployeeID = b.EmployeeID JOIN Departments AS d ON b.DepartmentID = d.DepartmentI…

複数のテーブルの結合を行う(1)

SQL

この辺りからややこしくなってきます。 SELECT Customers.PrefecturalID , Prefecturals.PrefecturalName AS 都道府県名 , COUNT(*) AS 顧客数 FROM Customers JOIN Prefecturals ON Customers.PrefecturalID = Prefecturals.PrefecturalID GROUP BY Custome…

問題追加

その17(2x2)を追加しました。問題一覧のページが見にくかったので、見やすいようにレイアウトを少し変更しました。

printfは便利

ビンゴの結果を整形表示です。乱数の扱いは難しいで書いた重複無し乱数の続き。 import Data.List import System.Random import Text.Printf line = 10 main = bingo(30) >>= putStrLn >> bingo(35) >>= putStrLn bingo :: Int -> IO String bingo n = do xs …

副問い合わせを使う

SQL

最初はJOINだと思っていたら、いきなり副問い合わせだったので予想外。 SELECT * FROM Products WHERE ProductID NOT IN ( SELECT ProductID FROM Sales ) ; 練習問題でこんな使い方が出てきました。 SELECT SaleID , Quantity , CustomerID , ( SELECT Cust…

重複を排除する

SQL

DISTINCTです。結構便利。 SELECT DISTINCT Address AS 住所 FROM Customers ; 書く順番は列名の後。「CustomersテーブルからAddressを取り出して重複を排除する」という順番。

マイコミジャーナルで紹介されました

4パターンで考えるWikiの社内的使い道 - ルール集や用語集にいかが?で、ローカル型Wikiの一つとして「ひとりWiki」が紹介されました。

バージョンアップしました

バージョン1.3.1です。バグ修正版なので、今のバージョンで特に問題がないのであればあえてダウンロードする必要はないです。 キャプチャ時にスクロールバーが残ってしまう問題を軽減する処理を追加しました。 修正ではなく軽減というところが今ひとつなので…

登録語数

クロスワード辞典の登録語数が6,000個になりました。登録して下さった方ありがとうございます。最近では思いつきで登録しようとしても結構な割合で登録済みになっています。自分一人で思いつく単語の数はそれほど多くないということでしょうか。

ひらがなを小さく

ホワイトボードに字を書く時にひらがなを小さく書くときれいに見えるという話を聞いたので、ひらがな部分を小さく表示するスクリプトを書いてみました。画面で見た限りではあまり見やすくなったとは感じませんが、見にくくもなっていないようなので画面内に…

乱数の扱いは難しい

重複無し乱数です。乱数に大苦戦。与えられたリストからランダムに一つ選んで、選んだもの以外のリストからさらにランダムに一つ選んで……、というやり方です。 import System.Random main = bingo(10) >>= print bingo :: Int -> IO [Int] bingo n = do g <-…

スライドショーで見るに説明文を追加しました

使い方が分からないという指摘があったので、説明文を追加しました。

カレンダー形式で見せるサービス

いろいろいちばんではいくつかのサイトからランキング情報を収集してカレンダー形式で表示しています。これとちょっと似たサービスでブログカレンダーというのがありました。こちらは話題となっているキーワードのトップ10をカレンダー形式で表示しています。

並び替えを行う

SQL

ORDER BYです。 SELECT ProductName FROM Products ORDER BY Price ; 書く順番はHAVINGの後。並び順の制御として、昇順の場合ASC、降順の場合DESCを使います。ASCは省略可能。本ではASCはascendの略、DESCはdescendの略となっていました。私が以前聞いた時に…

問題追加

その16(2x2)を追加しました。アクセスログを見たところ、まとめて印刷したいという要望がありそうだったので、問題一覧のページに印刷用のページへのリンクを入れるようにしました。これで少しは楽になると思います。問題一覧ページの見た目がだいぶ汚くなっ…

直積

全ての組み合わせです。私が書いたのはこれ。 list = [[1, 2, 3, 4], [7, 8, 9]] list2 = [[0, 1], [2, 3], [4, 5]] main = do print $ crossProduct list print $ crossProduct list2 crossProduct :: [[a]] -> [[a]] crossProduct [] = [] crossProduct (x…

クロス集計を行う

SQL

SELECT HireFiscalYear AS 入社年度 , SUM( CASE WHEN BloodType = 'A' THEN 1 ELSE 0 END ) AS A型 , SUM( CASE WHEN BloodType = 'B' THEN 1 ELSE 0 END ) AS B型 , SUM( CASE WHEN BloodType = 'O' THEN 1 ELSE 0 END ) AS O型 , SUM( CASE WHEN BloodTyp…

グループ単位で集計した結果を絞り込む(2)

SQL

SELECT PrefecturalID AS 都道府県 , COUNT(*) AS 顧客数 FROM Customers WHERE CustomerClassID = 1 GROUP BY PrefecturalID HAVING COUNT(*) >= 2 ; WHERE句とHAVING句の組み合わせ。書き順は1)SELECT、2)FROM、3)テーブル名、4)WHERE、5)条件、6)GROUP BY…

グループ単位で集計した結果を絞り込む(1)

SQL

SELECT PrefecturalID AS 都道府県 , COUNT(*) AS 顧客数 FROM Customers GROUP BY PrefecturalID HAVING COUNT(*) >= 3 ; HAVING句の登場。書き順は1)SELECT、2)FROM、3)テーブル名、4)GROUP BY、5)グループ化列名(GROUP BYの方)、6)グループ化列名(SELECT…

グループ単位で集計する

SQL

SELECT PrefecturalID AS 都道府県 , COUNT(*) AS 顧客数 FROM Customers GROUP BY PrefecturalID ; GROUP BY句の登場。書き順は1)SELECT、2)FROM、3)テーブル名、4)GROUP BY、5)グループ化列名(GROUP BYの方)、6)グループ化列名(SELECTの方)、7)集計関数、…

画面編集機能

フォントの変更等もIEコンポーネントの機能を呼び出すだけで実現できます。 機能 Execの引数 フォント設定 IDM_FONT 太字 IDM_BOLD 斜体 IDM_ITALIC 下線 IDM_UNDERLINE 取消線 IDM_STRIKETHROUGH 背景色 IDM_BACKCOLOR 画像 IDM_IMAGE 下付き IDM_SUBSCRIPT…

バージョンアップしました

バージョン1.3.0です。 「ページ設定」を追加しました。 「印刷」を追加しました。 「印刷プレビュー」を追加しました。 「インターネットオプション」を追加しました。 画面編集機能として「編集モードON」「編集モードOFF」「フォント」「太字」「斜体」「…

列の値に条件を設定する

SQL

SELECT ProductName AS 商品名 , CASE WHEN Price < 1000 THEN 'C' WHEN Price < 2000 THEN 'B' ELSE 'A' END AS ランク FROM Products ; CASEが出てきました。便利ですね。Oracle8iを使っていた頃に上記のSQLと似たようなことをしようとしてDECODEとSIGNを…

スライドショーで見る

最近の人気エントリーでノスタルジックで切ない気持ちになる画像くれというのがあったので見ていたのですけど、1枚1枚見ていくのが結構手間でちょっと面倒でした。せっかくスライドショー作成というのを作っていたので、これを使って画像を見られるようにし…

ある条件でレコードを絞り込む(2)

SQL

SELECT count(*) AS 子のつく社員の人数 FROM Employees WHERE EmployeeName LIKE '%子' ; LIKEが出てきました。LIKEを使った場合の文字列の中の%と_は特別な意味があって、%は任意の文字列に一致、_は任意の一文字に一致します。

ある条件でレコードを絞り込む(1)

SQL

SELECT EmployeeName as 氏名 FROM Employees WHERE Height >= 180 ; WHERE句の登場です。書き順は1)SELECT、2)FROM、3)テーブル名、4)WHERE、5)条件、6)列名、の順です。「EmployeesテーブルからHeightが180以上の氏名を取り出す。氏名の列名はEmployeeName…