ここから本文です

SQLのCOUNT(*)は、縦横どっちを数えるのですか?

アバター

ID非公開さん

2019/8/407:43:23

SQLのCOUNT(*)は、縦横どっちを数えるのですか?

おかしいと思いますが。(アクセスで実習してます)

例えば、100人の生徒の
名前、国語、数学
というテーブルがあります。

select count(数学);
select count(*);

の場合
どちらも 100 と表示されますが、

select count(数学);
の意味は「数学」列のデータ数を数える。
ですよね?

ならば
select count(*);
の意味は「すべての」列のデータ数を数えなさい。
しかし、
データ数は全列同じだから、
どこかの1つの列でいいよ。
みたいな感じに理解しないとおかしくないですか?
つまり「縦」(列)を見ていく、みたいな感じ。

それとも
select count(*);
は、レコードの数を数えるんですか?
そうなると横を見ていくみたいな感じですよね?

うまく言えないけど、
select count(数学);
は、すでに、
レコード件数を全て数えないさい、
という命令は含まれていると考え、
列は数学列ですよ。という意味が
メインなのですか?
つまり「列の指定」がメインの命令ですよね?

そうなると*の場合も同じように理解
すると、
「レコード件数を全て数えなさい。それはわかってますよね?
さて、メインの命令ですが、列は全列ですよ。

ただし全列のレコード合計
ではなく、どこか1つの列の件数でいいです。」

となりませんか?

つまり *(アスタリスク)の「全て」という意味は
何の「全て」を求めなさいと言っているのでしょうか?
行ですか? 列ですか?

select count(数学);
で考えると、
列の全て、となってしまいます。

閲覧数:
19
回答数:
2

違反報告

ベストアンサーに選ばれた回答

tom********さん

2019/8/410:23:58

こちらを参考にされると・・・。
select count(*)とselect count(数学)の結果が同じになるのは一定の条件が必要です。
http://www.doppo1.net/oracle/tuning/count-tuning.html

アバター

質問した人からのコメント

2019/8/7 15:19:34

回答ありがとう御座いました。

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

nan********さん

2019/8/408:07:19

項目名を指定すると、その項目がnullではない数をカウントします。
*は全レコード数です。

もちろんwhereの条件は先に判断しています。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる