count(distinct *)
をSQLで使用できないのはなぜですか?すべての個別の行を数えますか?SQLカウント(*)と別名
答えて
select count(*) from (select distinct * from MyTable) as T
私は強くあなたは再考えることDISTINCT
を使用するすべてのクエリを示唆しているが。大部分のケースでは、GROUP BY
がより適切(かつ高速)です。
EDIT:は質問のコメントを読んでたので、私は実際に結果を得るためにやって必要以上にあなたが決してがより多くの仕事をするためにDBMSを依頼する必要があることを指摘しなければなりません。テーブルに重複する行がないことを事前に知っている場合は、DISTINCT
を使用しないでください。
@Christian - こんにちは、それは前にそのように見たことはありません。好奇心のために私の最後のテーブルにそれを走らせました。 ms SQLサーバーで作業しますか?注 - 括弧内の選択は完全に実行されます – Kamal
OracleではDISTINCTはGROUP BYを使用して実装されているため、DISTINCTとGROUP BYは同じ実行計画を持ちます。だから違いはないはずです。 –
@Kamal:申し訳ありませんが、SQL Serverがネストされたクエリを使用しているかどうか分かりません。エイリアス名を末尾に追加すると( 'as T')問題が解決されました。 –
本当にできます。
識別子がある場合は、全く異なる行はありません。しかし、あなたは、インスタンスのために行うことができます:
SELECT COUNT(DISTINCT SenderID) FROM Messages
あなたは...によって
SELECT column1, column2, column3, count(*)
FROM someTable
GROUP BY column1, column2, column3
これは実際に質問が何を求めても実際には得られません。 –
ない理由を、あなたのテーブルと、グループ内のすべての列を選択することができますか?
select
count(distinct name)
from
people
2人のポエプルが同じ名前を持つ可能性があるため。 OPはCOUNT(DISTINCT *)について尋ねました。 –
申し訳ありませんが、私は答えたときに質問の別のテキストでした。 – silent
UberKludge、および特定のpostgreすることができるが、
select count(distinct table::text) from table
あなたはドキュメントから、2005
;WITH cte AS (
SELECT DISTINCT Val1,Val2, Val3
FROM @Table
)
SELECT COUNT(1)
FROM cte
が質問に答えるために、SQL ServerのCTEを試すことができます
行の合計数を返すように、すべての行が になるように指定します。 テーブル。 COUNT()には のパラメータはなく、 DISTINCTと一緒に使用することはできません。 COUNT()は 式パラメータを必要としません。 定義では、 の特定の 列に関する情報が使用されないためです。 COUNT(*)は、 重複を除去することなく、指定された表の 行の数を返します。それぞれの行を別々に とカウントします。これには、NULL値を含む行 が含まれます。
あなたは「ドキュメンテーションから」と書かれていますが、それはどのドキュメンテーションですか? –
Sql Serverのヘルプドキュメント。 http://msdn.microsoft.com/en-us/library/ms175997.aspx –
COUNT(*)は、クエリに一致する行の数です。
行には、rowidなどの固有の情報が含まれています。すべての行は、明確に区別されます。
代わりに、いくつかのフィールドの値の別個のインスタンスをカウントする必要があります。
行に固有の情報が含まれているのはなぜですか?それは...必要ではないかもしれませんが、必要ではありません。 – Murph
いくつかの言語では 'distinct *'を処理できない場合があります。そのため、多くの列を区別したい場合は、 'distinct ColumnA || ColumnB 'とし、それらが異なるかどうかを判断する前に組み合わせる。変数が数値かどうか、データベースハンドラが文字列に自動型キャストを行うことができるかどうか注意してください。
これは完全な証明方法ではありません。たとえば( 'test'、 'string')と( 'tes'、 't string')は同じように見えます。あなたは弦を詰めて何かをすることができますが、それは乱雑になります。より良いIMOは、DISTINCTでサブクエリを使用し、それからCOUNTを得るだけです。 –
select count (Tag_no) from tab_raw_tag_value where tag_no in (select distinct tag_no from tab_raw_tag_value)
これは質問に答えません –
- 1. 複数のカウント(別名)
- 2. SQLカウントは別の列に依存
- 3. VB6レコードセットとSQLカウント
- 4. SQLテーブルの別名
- 5. SQLクエリ - 別名+別のピリオド+別のテーブル
- 6. 1つのSQLクエリ内で別個の、カウントとソート
- 7. ルックバックウィンドウを日付別にグループ化したSQLの別個のカウント
- 8. SQLカウントとグループの重複
- 9. SQL結合カウントとselectクエリ
- 10. SQL Serverの結合とカウント
- 11. Djangoフィルタテーブルとカウント別にソート
- 12. 匿名ユーザとログインユーザのカウント -
- 13. 別名でのSQLルーピング
- 14. SQLカウント(*)のパフォーマンス
- 15. SQLカウント発生
- 16. SQLとグループ化とカウントの問題
- 17. T-SQLとSSRSのグループ化とカウント
- 18. SQLパフォーマンス(SQL 2000)をカウント
- 19. ユニークなカウントによる個別のカウントと集計
- 20. SQLサーバの別のテーブルに基づく行数のカウント
- 21. 変換のSQL個別、カウント&GROUPBY LINQクエリへのナビゲーション
- 22. SQLクエリをグループ化して個別のカウントを取得する
- 23. 異なる行からのSQLの別個のカウント?
- 24. SQL別のテーブルの複数のフィールドをカウントする
- 25. 別のカウントでグループを選択する(私)SQL
- 26. sql三重結合:あいまいな属性名のカウント
- 27. SQL Server:XML要素の要素名によるカウント
- 28. 国際的なドメイン名の長さをカウントするSQL(PostgreSQL)
- 29. 行の別名を選択し、各値のカウントを表示
- 30. ActiveRecordを別名でカウントするように強制します。
「個別の行」とはどういう意味ですか? –
行全体に重複している行がありますか、それは見つけようとしていますか? –
今私はそれを考えると、テーブルが正規化されているので、まったく同じ行がないので、その無駄な権利がありますか?これは理由ですか? –