こんにちは。仲沢です。
久しぶりのSQL Tipsとなりますが、前回行ったHAVING句の応用編ということで、以下のような例題を挙げてみました。

この表はある小学校のテストの結果となります。
この中から、「算数の点数が80点以上かつ国語の点数が50点以上」の生徒IDを抽出します。
抽出のイメージは以下の通りです。

一見簡単そうに見えますが、行毎に科目が別れている表の中から条件が異なる行を抽出しますので、かなりの難問です。
通常のWHERE句を使うと「算数の点数が80点以上」や「国語の点数が50点以上」という単一の条件や「算数の点数が80点以上もしくは国語の点数が50点以上」というOR条件での取得は可能ですが、今回のようにAND条件での取得となると一工夫が必要となります。
まずはCASE文を使って「科目が算数の場合80点以上であれば1、科目が国語の場合50点以上であれば1、それ以外は0」を返す列(判定)を作成してみます。
SELECT
生徒ID,
科目,
点数,
CASE WHEN (科目='算数' AND 点数>=80) THEN 1
WHEN (科目='国語' AND 点数>=50) THEN 1
ELSE 0 END AS 判定
FROM
テスト結果
実行結果は以下の通りです。

ここで、算数が80点以上、国語が50点以上の行に1がつく列ができました。
求めたい行はどちらにも1がついている行、つまり「この判定の合計が2の生徒ID」ということになります。
行の合計を求めるにはGROUP BY句でグループ化した上で集計する必要があり、その結果からの条件抽出となるためHAVING句を使用します。
SELECT
生徒ID
FROM
テスト結果
GROUP BY
生徒ID
HAVING
SUM(CASE WHEN (科目='算数' AND 点数>=80) THEN 1
WHEN (科目='国語' AND 点数>=50) THEN 1
ELSE 0 END)=2
となります。
いかがでしょうか。このような抽出をしたいときには、プログラム内での処理で解決することが多いですが、意外とスッキリしたSQLで解決できることが分かりました。
是非、ご活用ください。
こんにちは、粟野です。
日本でも多くの方が利用しているSNSですが、私自身もイマイチサービスの状況や特徴がわからないものもありましたので、今回は幾つかのサービスを調べてみました。
有名なサービスですので、既にご利用されている方も多いと思いますが参考になれば幸いです。
Facebook
映画化(ソーシャル・ネットワーク)でさらに有名になった世界最大のSNS。(2011年現在のユーザー数は7億5000万人を超えているようです)
これだけのユーザーの大規模なトラフィックとデータ量を支え維持する、裏側の仕組みが気になります。
mixi
日本最大級のシェアを持つSNS。
mixiアプリのリリースで更に便利に楽しくなりました。最近では、足跡機能がなくなりましたが、新たにロゴデザインの変更やmixiページの提供を開始しています。
Twitter
「ツイート」と呼ばれるれる短文を投稿できる簡易ブログサービスです。
震災時にツイートされた被害状況、ライフライン情報、炊き出しの情報はとても役立ちました。震災時の瞬間的なツィートに耐え切ったインフラもすごいですね!
LinkedIn
近々日本語化されると言われているビジネスに特化したSNS。
まだあまり馴染みのないサービスですので、ちょっと楽しみです。
Google+
Googleが提供するソーシャルネットワークプロジェクト。
8月2日には、ユニークユーザー数が2500万人達したようです。
googleの他のサービスとの親和性が鍵になりそうです。
お仕事の場面でも使われることが多くなってきた様々なSNSサービス。
開発センターでも、FacebookページやTwitterと連動したサービスのお仕事などもそろそろ始まっているようです。
興味のある方はお気軽にご相談下さい!
こんにちは。IT開発センターの小野です。
今回はPhotoshopを活用した画像加工の便利なテクニックをご紹介致します。
お客様からご提供頂いた写真や撮影した写真を使用する際、画像がぶれていたり、ピントがずれていたりと、どうしてもフォーカスが定まっていない場合が多々あります。
こんなとき、もし同じアングルの写真が複数ある場合は、「レイヤーを自動合成」を使用すると、ボケ具合を修正することができます。
方法としては、ボケ具合の違う2枚の画像を用意し、レイヤーを複数選択してから
「編集」→「レイヤーを自動合成(画像をスタック)」
以上の方法で自動的にフォーカスの処理をしてくれます。
レイヤーの自動合成機能は、焦点や輝度・色調の異なる複数の写真を補正しながら組み合わせ、被写界深度の深い1枚の写真を作りだすための機能です。
そのため、使い方次第では上記のようなピントの補正にも利用できます。
このほかの使い方としては、たとえば被写体が近い位置にあったり暗い室内などの環境で、どうしても被写界深度を深くすることができない場合、同じ構図でピントの異なる写真を何枚か撮っておけば、ピントの合っている部分を自動合成して被写界深度の深い写真を作り出すことも可能です。
この機能はPhotoshopCS3以降のバージョンから搭載され、バージョンアップの度に精度が飛躍的に向上しています。
尚、写真撮影による「被写界深度」のテクニックは、先日の記事から詳しく知ることもできます。
インクレイブでは、こうした細かなテクニックを応用することで、本来再現できないクオリティの表現を行い、日々のお仕事に活かしています。