SQL Server 2017 Express エディション のインストール

SQL Server 2017 Express エディション のインストール

Microsoft SQL Server Express は Microsoft SQL Server の無償で提供されているエディションです。
Express は、エントリ レベルのデータベースで、最大 10 GB サイズの小規模なデータ ドリブン Web アプリケーションとモバイル アプリケーションを構築できます。

コアの最大数 4 コアです。PCでテスト環境に使うには十分かと思います。
使用できるメモリは、
インスタンスあたりの最大バッファー プール サイズで、1410 MB
インスタンスあたりの最大 Columnstore セグメント キャッシュ サイズは、352MB
データベースあたりの最大メモリ最適化データ容量は、352MB
最大データベース サイズは、10GB

となっています。
こう書かれても、私もピンと来ませんが、1つのトランザクションでそれほど大きなデータ処理をしなければ、全く問題のない機能だと思います。
もし、相当に大きなデータ処理をしたいのなら、「SQL Server 2017 Developer」を入れないといけないと思います。

SQL Server 2017 Express エディション のインストールの手順は、
1)SQL Server 2017 Express のダウンロード
2)SQL Server 2017 Express のインストール

SQL Server 2017 Express のダウンロード

下のリンク先から SQL Server 2017 Express のダウンロードを行います。
SQL Server ダウンロード

SQL Server ダウンロード

SQL Server ダウンロード

ダウンロードすると、「SQLServer2017-SSEI-Expr.exe」ファイルを入手できます。

SQL Server 2017 Express のインストール

上で入手した SQLServer2017-SSEI-Expr.exe を実行します。
インストールの準備が終わると、下のような画面が表示されます。
基本(B)をクリックします。
カスタマイズを行いたい場合は、カスタム(C)をクリックしますが、SQL Server に詳しくない場合は基本(B)を選択しましょう。

SQL Server インストール開始画面

SQL Server インストール開始画面

基本(B)をクリックすると「マイクロソフト ソフトウェア ライセンス条項」の同意画面が表示されます。
同意しましょう。

次に、SQL Server インストール場所の指定画面が表示されます。
標準ではCドライブにインストールされます。ドライブを変更したい場合は変更しておきましょう。
ここではSQL Server のプログラムのインストール先の指定なので、データの入れ先は別途後からになります。

あと、空き容量の確認をしておきましょう。
問題がなければ、「インストール(I)」ボタンをクリックしてSQL Server Express の本体のダウンロード&インストールを行います。

SQL Server インストール場所の指定

SQL Server インストール場所の指定

ダウンロード中は下のような画面が表示されています。
ダウンロードはかなりのスピードで行われるので、そんなに時間も掛からないと思います。

SQL Server インストール中の画面

SQL Server インストール中の画面

ダウンロードに成功すると下のような画面が表示されます。

SQL Server ダウンロード成功

SQL Server ダウンロード成功

ダウンロードが成功して、しばらくすると、インストールに入ります。
HDD の環境次第ですが、ダウンロードより少し時間がかかると思います。

SQL Server インストール中

SQL Server インストール中

インストールが成功すると下のような画面が表示されます。
SSMS(SQL Server Management Studio)はよく使うので、「SSMS インストール(I)」をクリックしてインストールしておきましょう。
SQL Server Management Studio (SSMS) のダウンロード画面がブラウザに表示されます。

SQL Server インストール成功

SQL Server インストール成功

SQL Server Management Studio (SSMS) のダウンロード

SSMSのダウンロードを行います。
800Mを超える大きさなので少し時間が掛かります。
「SSMS-Setup-JPN.exe」ファイルがダウンロードされます。

SSMS ダウンロード

SSMS ダウンロード

SQL Server Management Studio (SSMS) のインストール

上でダウンロードした SMS-Setup-JPN.exe を実行します。
ちなみに、SQL Server Express のインストール画面が残っていると思います。SSMSが正常にダウンロードできたのなら閉じてください。

SSMS インストール開始

SSMS インストール開始

「パッケージを読み込んでいます」と言う準備が終わると下のような画面が表示されます。
完了までにしばらくかかります。

SSMS インストール中

SSMS インストール中

完了すると下のような画面が表示されます。

SSMS インストール完了

SSMS インストール完了

SSMS を起動する

早速、SSMS を起動してみましょう。
初回はユーザー設定の読み込みとかで少し時間が掛かるかもしれませんが、下のようなログイン画面が表示されます。

SSMS ログイン画面

SSMS ログイン画面

「接続」ボタンをクリックして接続しましょう。
SSMS の画面が正常に出ましたか?
SQL Server Express に正常に接続できましたか?

SSMS 画面

SSMS 画面

「新しいクエリー」ボタンをクリックして「クエリー」画面を表示しましょう。
そこで、下の SQL を発行して正常に戻ってこれば完了です。


select * from sys.sysobjects

SSMS sysobjects画面

SSMS sysobjects画面

正常に表示されていれば、これでインストール完了です。
お疲れさまでした。

SSMSとは

SSMS は、SQL Server から SQL Database まで、SQL インフラストラクチャを管理するための統合環境です。
SSMS には、SQL のインスタンスを構成、監視、および管理するためのツールが備わっています。
SSMS を使用して、アプリケーションで使われるデータ層コンポーネントを配置、監視、アップグレードしたり、クエリとスクリプトを作成したりすることもできます。

以上、「SQL Server 2017 Express エディション のインストール」の紹介でした。

CSS padding

CSS padding

padding プロパティは、上下左右の padding を指定する際に使用します。
padding には負の値を指定することはできません。
また、%で指定することも出来ます。

padding の引数の与え方は、[上][右][下][左]の順に指定します。
上下左右を異なる padding 幅にしたい場合には、スペースで区切って上右下左の時計回りの順に4の値を指定します。

しかし、引数を必ずしも4つ与える必要がなく、下のようなことも出来ます。

値を1つ指定 指定した値が[上下左右]の padding
値を2つ指定 記述した順に[上下][左右]の padding
値を3つ指定 記述した順に[上][左右][下]の padding
値を4つ指定 記述した順に[上][右][下][左]の padding

この時計回りと、省略時の設定について覚えておくと便利です。 

margin padding border

margin と padding と border には次の関係があります。
border の幅は別途 width に加算されるので覚えておかないと細かな調整が出来なくなります。

margin padding borderの関係

margin padding borderの関係

padding は Element(要素)からすぐにスペースを空けるように働きます。なので border の位置にも影響してきます。
また、要素に指定した background 色を広げます。

一方、marginは border の外からスペースを空ける働きをします。
これは、隣接する Element(要素)に対してどれだけ距離を取るかを指定しています。
スペースを取った場合の background (背景色)は、親の背景色になります。

下に少しでも理解を助けるために参考になるHTMLを貼っておきますので、メモ帳にでもコピーして、名前を test.html 等保存して動かして確認にして margin や padding, border の幅を変えていろいろ試してみてください。


<html>
<head>
<style>
input{
    font-size: 10px;
    background: #909000;
    padding: 10px 20px 30px 40px;
    border: solid 10px;
    margin: 50px 40px 30px 20px;
}
</style>
</head>
<body>

<div style='background: #c0c0c0;'>
    <input type="button" value='Button'></input>
<div>

</body>
</html>

padding は margin に比べシンプルな仕様なので簡単に把握できると思います。
以上、「CSS padding」でした。

カテゴリー: CSS

CSS margin

CSS margin

margin プロパティは、上下左右の margin を指定する際に使用します。
margin の引数の与え方は、[上][右][下][左]の順に指定します。
上下左右を異なる margin 幅にしたい場合には、スペースで区切って上右下左の時計回りの順に4の値を指定します。

しかし、引数を必ずしも4つ与える必要がなく、下のようなことも出来ます。

値を1つ指定 指定した値が[上下左右]のマージン
値を2つ指定 記述した順に[上下][左右]のマージン
値を3つ指定 記述した順に[上][左右][下]のマージン
値を4つ指定 記述した順に[上][右][下][左]のマージン

この時計回りと、省略時の設定について覚えておくと便利です。 

この margin ですが、やたらと複雑でブラウザごとに挙動が違うこともあるため、非常に厄介です。
最近ではブラウザごとの挙動も落ち着いてきた感はあるものの重なりのマイナス指定で重なりのある時など、異なることがあります。

margin padding border

margin と padding と border には次の関係があります。
border の幅は別途 width に加算されるので覚えておかないと細かな調整が出来なくなります。

margin padding borderの関係

margin padding borderの関係

marginは border の外からスペースを空ける働きをします。
これは、隣接する Element(要素)に対してどれだけ距離を取るかを指定しています。
スペースを取った場合の background (背景色)は、親の背景色になります。

一方、padding は Element(要素)からすぐにスペースを空けるように働きます。なので border の位置にも影響してきます。
また、要素に指定した background 色を広げます。

下に少しでも理解を助けるために参考になるHTMLを貼っておきますので、メモ帳にでもコピーして、名前を test.html 等保存して動かして確認にして margin や padding, border の幅を変えていろいろ試してみてください。


<html>
<head>
<style>
input{
    font-size: 10px;
    background: #909000;
    padding: 10px 20px 30px 40px;
    border: solid 10px;
    margin: 50px 40px 30px 20px;
}
</style>
</head>
<body>

<div style='background: #c0c0c0;'>
    <input type="button" value='Button'></input>
<div>

</body>
</html>

margin の相殺

margin をわかり辛くしているのに相殺があります。
margin の相殺は上下 top と bottom の間で発生します。その際、margin は結合される(折り畳まれる (collapsed))ことがあり、結合される margin のうち大きなほうのサイズを持った一つの margin になります。
ただ、すべてのケースで相殺が起こるかと言うと、そうではないです。
・floatしている要素は、相殺が起きません。
・absolute と fixed を指定された要素は相殺されません。

単純な相殺は、大きなほうのサイズを持った margin が採用されますのでわかりやすいと思います。
親子での相殺や親子親子での相殺になってくると、かなり面倒になりますね。複雑な CSS を書くなら意識して設計を行う必要があます。
相殺が起きないケースは、一般的に使用する機械が少ないので割愛しますが、このレベルで仕事をされるようなら仕様までしっかり把握する必要があります。

negative margin(ネガティブ・マージン)

negative margin とは、マイナス方向に margin を設定することを言います。
単純な例では、少しだけはみ出させたい場合に使われます。

でも、margin の数値をマイナス指定することによって、要素を移動させ配置することができるので、配置に使うこともあります。
negative margin は理解している人にはとても便利なのですが、margin を複雑にしている一因です。
興味があるようなら negative margin で検索してみてください。

以上、最初は戸惑う「CSS margin」でした。

カテゴリー: CSS

Windows 10 アップグレード 無償アップグレードの期間切れ後の状況

Windows 10 アップグレード 無償

既にWindows 7 や Windows 8.1 からの Windows 10 への無償アップグレードの期間はとっくに過ぎていますが、2018/02/01時点でまだ無償でアップグレードできました。

いろいろな条件があるのだと思いますが、まだ無償アップグレードを実施していない方も居ると思いますので、経緯だけ報告します。
ちなみに、公式には以下の通りです。
Windows 10 無償アップグレード キャンペーンは、2016年7月29日まで。
支援技術をご利用の方向け Windows 10 アップグレードは、2017年12月31日まで。

また、一度アップグレードして、またダウングレードした場合は、上の期間にかかわらず無償でアップグレードできるそうです。

今回は、一度も Windows 10 にアップグレードしていないPCで無償アップグレードを試みました。

アップグレードしたPCについて

今回 Windows 10 にアップグレードしたPCですが、ほぼ放置状態のDELLのノートPCです。
OSは Windows XP が入っており、CPU も celeron M でメモリも 1.5G といたってショボショボのPCです。
しかし、そんなショボショボのノートPCに頼らざるを得ない状況になり、急遽「Windows 10」にしよう!となった次第です。

ちなみに、無償アップグレードの期間が過ぎているのを知っていたので、 Windows 10 を別途購入して載せようと思っていたのですが、とりあえずやってみようと思いチャレンジしてみました。

インストール手順

まず、手持ちの Windows 7 starter にアップグレードしました。
クリーンインストールではなく、上書きインストールです。
サービスパック1まで当たっていました。

※ここで Windows 7 starter のライセンス認証を行いました。

HDDの空き容量に少し不安が有ったので、Windows 7 の Windows フォルダーやProgram files フォルダーを地道に削除しました。

次に「Windows 10 ダウンロード」へ行き、「ツールを今すぐダウンロード」をクリックしてツールをダウンロードしました。
その後、ツールを起動しそのまま Windows 10 のインストールを行いました。
その後は放置状態で数時間後に確認したら Windows 10 home が正常にインストールされており、ライセンス認証もされたままでした。

無償アップグレードはいつまで出来るの?

これは無償アップグレードいつ出来なくなっても仕方のないことなので、出来るときにやっておくのが良いと思います。
が、Windows 7 のサポート期間のうちはそのまま使いたいなどの要望もありますし。。。
一度アップグレードして戻すにしても、手間やリスクもあるわけで。。。

公式発表していてもまだできるってことは、簡単に検知できるような仕組みになっていなくて、疑わしきはOKって判断でライセンス認証を通しているのかもしれませんね。
とりあえず、上のインストール手順で無償アップグレードが出来ました。

まだ、Windows 10 の無償アップグレードしていないPCを持っている人は、気が向いたときに試してみてください。
以上、「Windows 10 アップグレード 無償」で出来た報告まで。

知っていると便利な Windows 10 仮想デスクトップ

Windows 10 仮想デスクトップ

Windows 10では、「仮想デスクトップ」という機能が追加されています。
仮想デスクトップは、複数の画面を持つことで、作業領域を広げる機能です。
1つの大きな仮想画面よりも、切り替えられる複数の画面の方が使い勝手が良いと思われます。

それぞれの仮想画面は作業ごとに別のアプリを起動しておき、会社独自のアプリケーション作業、WordやExcel作業、Web検索をしながらの資料や情報の整理、メールやスカイプなどの連絡、のように用途をわけておけば、ひとつずつアプリを開いたり閉じたりすることなく、作業に応じて手早く切り替えられます。
特に、画面が小さなノートPCで役立つオススメの機能です。

仮想デスクトップの作り方

仮想デスクトップは、タスクバーの「タスク ビュー」から起動します。
1)タスク ビューをクリックします。
タスク ビューの位置は下の通りです。

タスクバーの「タスク ビュー」

タスクバーの「タスク ビュー」

2)クリックすると、画面の右下に「+新しいデスクトップ」が表示されます。

画面の右下に「+新しいデスクトップ」が表示

画面の右下に「+新しいデスクトップ」が表示

3)「+新しいデスクトップ」をクリックすると、新しい仮想デスクトップが作成されます。

新しい仮想デスクトップが作成されます

新しい仮想デスクトップが作成されます

仮想デスクトップの切り替え方

仮想デスクトップを消す時も、タスクバーの「タスク ビュー」から行います。

1)タスク ビューをクリックします。

2)仮想デスクトップの一覧が表示されます。
表示したい仮想デスクトップの上にマウスカーソルを乗せクリックします。
これで切り替えられています。

仮想デスクトップの終わり方

仮想デスクトップを消す時も、タスクバーの「タスク ビュー」から行います。

1)タスク ビューをクリックします。

2)仮想デスクトップの一覧が表示されます。
削除したい仮想デスクトップの上にマウスカーソルを乗せると、乗せた仮想デスクトップの右上に「X」が表示されます。
更に表示された「X」の上にマウスカーソルを乗せると、「X」が赤表示されます。

「X」の上にマウスカーソルを乗せると、「X」が赤表示されます

「X」の上にマウスカーソルを乗せると、「X」が赤表示されます

3)赤くなっている「X」をクリックでその仮想デスクトップを消すことができます。

便利なショートカットキー

仮想デスクトップを素早く使うならショートカットキーがお勧めです。
[Windows]キー+[Ctrl]キー+[D]で新しいデスクトップの作成できます。
[Windows]キー+[Ctrl]キー+[矢印 →(←)]で、右(左)の仮想デスクトップへ素早く移動できます。
[Windows]キー+[Ctrl]+[F4]キーで、表示中の仮想デスクトップを閉じる消すことができます。
 ただし、仮想でないデスクトップを消そうとすると、残った仮想デスクトップが自動で消されてしまいます。
 消した仮想デスクトップ上にアプリが立ち上がっていると、仮想でないデスクトップに移されています。
[Windows]キー+[Tabキー]でタスクビューの表示ができます。

以上、「Windows 10 仮想デスクトップ」の簡単な使い方まで。

iPhone X の顔認証「Face ID」を 150ドルで突破された!

iPhone X の顔認証「Face ID」を 150ドルで突破された

「Computer Weekly 日本語版 2018 年 1 月 10 日号」を見ていたら、「iPhone X の顔認証「Face ID」を 150ドルで突破された」と出ていました。
『顔認証テクノロジー「Face ID」は 150 ドルで突破できる。一般ユーザーが利用したり対象になったりする可能性は低いが、突破できることは証明された。』と出ていました。

ググってみると同様の記事があちらこちらに。。。
『iPhone Xの顔認証がマスクで突破される』とか。

「Face ID」をどうやって騙した?

要約すると、「ネットワークセキュリティの専門家が 3D プリンタで作成したマスクを使って、Apple の最新主力スマートフォン「iPhone X」の顔認証テクノロジー「Face ID」を擦り抜けた」と言うものでした。
ネットワークセキュリティの専門家と言うのは、ベトナムのセキュリティ企業 Bkav のことで、マスクを 5 日間で作成したそうです。
3D プリンタで作成した輪郭、2D 画像、アーティストが形成した鼻を使い、顔の肌周りに特殊処理を施したもので、製作総額は 150 ドル(約 1 万 7000 円)だったそうです。

まぁ、安価な価格で破られてしまったことは問題ですが、実情その手法を使ってデータを盗み出すかと言えばそれは一般の人には当てはまらない行為かと思います。
安価な価格と言えどもかなりのスキルが必要なことは明らかですしね。

また、iPhoneから銀行などにアクセスして、そのまま送金できるかと言えば、他の何らかのセキュリティが掛かっているわけだし、金銭取得は難しそう。
他の用途は、ストーカーとか弱みを握りたいなどの素行調査の一環としてなどですね。いろいろな目的でデータを盗みたい人が居ると厄介かも。。。

じゃ、顔認証「Face ID」はだめで指紋認証機能「Touch ID」なら大丈夫かと言うと、これも既に破られていますので、同じですね。
顔認証「Face ID」が破られたからと言って、慌てることもないかと思います。

破られたとは言え、生体認証は素晴らしい機能で普段使いには十分な性能を発揮してくれると思います。
安価なセキュリティは、破られる運命なので絶対を期待するのを止めれば良いだけのことです^^

以上、ふと思ったことでした。

スマホのGoogleカレンダーで共有相手の予定・カレンダーが見えない

スマホのGoogleカレンダーで共有相手の予定・カレンダーが見えない

本日の仕事でGoogleカレンダーの共有をしようとなり、PCからGoogleカレンダーの共有設定をしました。
PCで確かめたところちゃんと共有できているにも関わらず、スマホでは共有相手の予定・カレンダーが見えない状態になっていました。

更新を試して表示されず、困ったなぁと思ってググってみても解決策が簡単に見つからず、更に困ったなぁ。。。状態。

PCでは共有できているので、スマホの設定だけなんだろう思い、とにかく触るまくっていると、あっ!!こんなところに!

スマホのGoogleカレンダーで共有相手の予定が見えない原因

スマホのGoogleカレンダーで共有相手の予定が見えない原因

上の写真の赤枠のところ。。。「もっと見る」
こんなの今まで無かったような、と思い開けてみると、現れました、共有相手のメールアドレス^^

しかし、設定はさらに続きます。
共有相手のメールアドレスをタップします。
すると
・同期
・名前
・通知関連
の設定画面になります。

同期がOFFになっていると、予定はカレンダーに表示されません。
ここがどうやら今回の原因のようです。

同期をONにして戻ると、ちゃんとカレンダー共有相手の予定がカレンダーに反映されてました^^
めでたしめでたし^^

私がGoogleで検索しても簡単に見つからなかったので、備忘録も兼ねて紹介しておきます。
以上、スマホのGoogleカレンダーで共有相手の予定・カレンダーが見えないでした。

IX Web Hosting からメールが届きました(その2)

IX Web Hostingを検討している方へ報告です。
IX Web Hosting からメールが届きました。

ここから↓↓↓↓↓
Hello,

We are excited to announce that
your IX Web Hosting account will soon become part of our sister brand Verio! .

Verio is dedicated to helping customers around the globe create and launch their business and personal websites.
As part of the Endurance International Group, which acquired IX Web Hosting,
we’re excited to be able to offer IX Web Hosting customers faster,
more modern servers, increased network security, and a wide variety of products and services to help customers build and grow their online presence.

After the migration is complete, IX Web Hosting will be discontinued.
But, there’s no need to worry, you don’t have to make any changes right now.

We will send you another email letting you know when the transition is expected to begin, including instructions on anything you need to do.
Once complete, your IX Web Hosting login page will show you how to log in to your new Verio control panel and the Verio Terms of Service will apply to your account and use of Verio’s services.

The Verio Terms of Service can be viewed here: https://www.verio.com/legal/. All of your products, settings, and content – plus a lot more! – should be there ready for you.

For more information about Verio, what you can do to prepare for the transition and what to expect after it’s complete, check out the transition site at http://transition-to-verio.com/.

We’ll keep that site up to date with the latest news and information as the transition occurs.
As always, if you have any questions please contact IX Web Hosting support at 614 534 1961.

Thank you,
The Verio and IX Web Hosting Teams
ここまで↑↑↑↑↑

こんにちは、

我々はそれを発表することに興奮している
あなたのIXウェブホスティングアカウントはすぐに姉妹ブランドVerioの一部になります! 。
Verioは世界中の顧客がビジネスや個人のウェブサイトを作成して立ち上げることを支援することに専念しています。
エンデュランス・インターナショナル・グループの一環として、
IX Webホスティングを取得した、

私たちはIX Web Hostingのお客様により早く提供できることを嬉しく思います。
より現代的なサーバー、ネットワークセキュリティの強化、および幅広い種類の製品とサービスを提供して、お客様のオンラインプレゼンスを構築し成長させるのに役立ちます。

移行が完了すると、IX Webホスティングは中止されます。
しかし、心配する必要はありません、あなたは今すぐ何も変更する必要はありません。

移行がいつ開始されるのかを知らせる別の電子メールをお送りします。
あなたがする必要のあることについての指示も含めて。
完了すると、IX Web Hostingログインページに新しいVerioコントロールパネルへのログイン方法が表示され、Verioの利用規約がアカウントおよびVerioのサービスの使用に適用されます。

Verioの利用規約は、https://www.verio.com/legal/でご覧いただけます。すべての製品、設定、コンテンツに加えてさらに多くのものがあります。 – あなたのために準備ができているはずです。

Verioの詳細については、移行を準備するために何ができるのか、完了後に何を期待するのか、http://transition-to-verio.com/の移行サイトをチェックしてください。

移行が行われると、そのサイトは最新のニュースと情報で最新の状態に保たれます。
いつものように、ご不明な点がございましたら、IX Web Hosting support(614 534 1961)までお問い合わせください。

ありがとうございました、
VerioとIXのWebホスティングチーム

と言う内容でした。買収されちゃったみたい。。。(^^);
中身は変わらないと思うけど。
とりあえず安ければOKで、後は自力でなんとかできる人でないと、怖くて勧められない Web Hosting 会社だから気を付けて契約しましょうね。

以上、IX Web Hosting からメールが届きました(その2)でした。

SQL Server CHECKSUM_AGG チェックサム

CHECKSUM_AGG チェックサム

グループ内にある値のチェックサムが欲しい場合、CHECKSUM_AGG関数を使います。
どのようなケースでチェック
NULL 値は無視されます。

構文:CHECKSUM_AGG ( [ ALL | DISTINCT ] expression )
引数:ALL すべての値にこの集計関数を適用します。 ALL は既定値です。
   DISTINCT CHECKSUM_AGG で、一意な値のチェックサムを返します。
   expression 整数式です。 集計関数とサブクエリは使用できません。

CHECKSUM_AGG は、テーブル内の変更を検出する場合に使用できます。
テーブル内での行の順序は、CHECKSUM_AGG の結果に影響しません。

対象データを変更した場合は、そのリストのチェックサムも変わりますが、 計算の結果チェックサムが変わらない場合もあります。

CHECKSUM_AGG の AGG は、aggregate (集計)の意味です。

下のSQL例文を載せておきます。

declare @tbl1 table(c_point int)
insert into @tbl1 (c_point) values (30)
insert into @tbl1 (c_point) values (40)
insert into @tbl1 (c_point) values (4)
insert into @tbl1 (c_point) values (60)
insert into @tbl1 (c_point) values (60)
insert into @tbl1 (c_point) values (NULL)
insert into @tbl1 (c_point) values (80)

--ALL
--NULLはカウントされません
select CHECKSUM_AGG(c_point) from @tbl1

--DISTINCT
--60が重複しているので結果が異なります
select CHECKSUM_AGG(DISTINCT c_point) from @tbl1

--値が変更されると戻り値も変わります
update @tbl1 set c_point=70 where c_point=80
select CHECKSUM_AGG(c_point) from @tbl1

計算の結果チェックサムが変わらない例
下の例は非常に単純なので実際はこんなに簡単にチェックサムが変わらないことは無いと思いますが。
30 → 31 , 40 → 41 で同じ値を取ります。

declare @tbl1 table(c_point int)
insert into @tbl1 (c_point) values (30)
insert into @tbl1 (c_point) values (40)

--ALL
select CHECKSUM_AGG(c_point) from @tbl1

--値が変更されると戻り値も変わります
update @tbl1 set c_point=31 where c_point=30
update @tbl1 set c_point=41 where c_point=40
select CHECKSUM_AGG(c_point) from @tbl1

以上、SQL Server でチェックサムが欲しい場合、CHECKSUM_AGG関数を使い求めるでした。

SQL Server COUNT カウント 数える

COUNT カウント

SQL Server の対象データの行数を(アイテム数)求めるときに、COUNT関数もしくはCOUNT_BIG関数を使います。
COUNT は常に int データ型の値を返します。
COUNT_BIG は常に bigint データ型の値を返します。

構文:COUNT ( [ ALL | DISTINCT ] expression | * )
    OVER ( [ partition_by_clause ] order_by_clause )
引数:ALL すべての値に集計関数が適用されます。 ALL が既定値です。
   DISTINCT COUNT で、NULL でない一意な値の数を返します。
   expression text 、image、ntext 以外のあらゆる型の式です。
* すべての行を数えて、テーブル内の行の総数を返すことを指定します。
COUNT(*) はパラメーターはとらず、DISTINCT と一緒には使用できません。
COUNT(*) は重複値を除去しないで、指定されたテーブル内の行数を返します。
各行は 1 行としてカウントされ、 これには NULL 値を保持している行も含まれます。
OVER ( [ partition_by_clause ] order_by_clause)
partition_by_clause は、FROM 句で生成された結果セットをパーティションに分割します。

下のSQL例文を載せておきます。

declare @tbl1 table(a_goods varchar(3), b_empNo char(1), c_point int)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','1',80)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','2',60)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','3',40)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','4',30)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','5',50)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','6',60)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','7',NULL)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','8',220)

--ALL
--NULLはカウントされません
select COUNT(ALL c_point) from @tbl1
select COUNT(c_point) from @tbl1 --ALLが無くても同じ結果

--COUNT_BIG
select COUNT_BIG(ALL c_point) from @tbl1

--DISTINCT
--60が重複しているので1つ減ります
select COUNT(DISTINCT c_point) from @tbl1

--*
--行がカウントされます
select COUNT(*) from @tbl1

--over
--a_goods毎にc_pointがカウントされます
select distinct a_goods, COUNT(c_point) OVER (PARTITION BY a_goods) from @tbl1

もう一例
AVG や SUM を共に使用して結果を求める

declare @tbl1 table(a_goods varchar(5), b_empNo char(1), c_point int)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','1',60)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','2',70)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','3',40)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','2',20)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','3',40)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','1',50)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','2',20)

insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','1',70)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','2',60)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','3',50)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','1',80)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','2',30)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','1',60)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','2',40)

insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','1',90)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','2',70)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','3',40)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','3',70)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','3',60)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','2',50)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','1',50)

insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','1',30)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','2',50)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','3',90)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','2',40)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','2',10)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','3',80)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','3',30)

insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','1',80)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','2',60)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','3',40)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','2',30)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','3',50)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','1',60)
insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','1',20)

--商品、社員ごとのデータ
select distinct a_goods, b_empNo
, COUNT(c_point) over (partition by a_goods,b_empNo) 個数
, SUM(c_point) over (partition by a_goods,b_empNo) 合計
, AVG(c_point) over (partition by a_goods,b_empNo) 平均 
from @tbl1

--社員ごとのデータ
select distinct b_empNo
, COUNT(c_point) over (partition by b_empNo) 個数
, SUM(c_point) over (partition by b_empNo) 合計
, AVG(c_point) over (partition by b_empNo) 平均 
from @tbl1


--商品、社員ごとのデータ
select a_goods, b_empNo
, COUNT(c_point) 個数
, SUM(c_point) 合計
, AVG(c_point) 平均
from @tbl1 group by a_goods, b_empNo order by a_goods, b_empNo

--社員ごとのデータ
select b_empNo
, COUNT(c_point) 個数
, SUM(c_point) 合計
, AVG(c_point) 平均
from @tbl1 group by b_empNo order by b_empNo

以上、SQL Server で COUNT関数を使いアイテム数や行数を求めるでした。