タグ付けされた質問 「count」

COUNT:行数をカウントするために使用される集約SQL関数。


1
同じクエリで異なる条件を持つPostgresカウント
Postgres 9.3の編集 次のスキーマを持つレポートを作成しています:http : //sqlfiddle.com/#!15 / fd104/2 現在のクエリは次のように正常に機能しています。 基本的には、3テーブルの内部結合です。私はこのクエリを作成しませんでしたが、それを残した開発者がクエリを変更したいと思います。ご覧のとおり、にTotalApplication基づいてアプリケーション全体をカウントしますa.agent_id。そしてtotalapplication、結果の列を見ることができます。私が望むのは、それを削除しtotalapplicationて、新しい2列に変更することです。私はA追加したいcompletedsurveyとpartitalsurvey列を。基本的にこの部分は SELECT a.agent_id as agent_id, COUNT(a.id) as CompletedSurvey FROM forms a WHERE a.created_at >= '2015-08-01' AND a.created_at <= '2015-08-31' AND disposition = 'Completed Survey' GROUP BY a.agent_id 私はちょうど追加しましたが、唯一の違いがある同じクエリを持つAND disposition = 'Completed Survey'別の列が必要ですpartialsurveycompletedsurvey AND disposition = 'Partial Survey' そして COUNT(a.id) as PartialSurvey しかし、私はそのクエリをどこに置くか、クエリがどのように見えるかを知らないので、最終的な出力にはこれらの列があります …

2
大きなPostgresSQLテーブルでCOUNT / GROUP-BYのパフォーマンスを改善しますか?
PostgresSQL 9.2を実行していますが、約6,700,000行の12列の関係があります。これには3D空間にノードが含まれ、各ノードはユーザー(作成者)を参照します。どのユーザーがいくつのノードを作成したかを照会するには、次のことを行います(詳細を追加explain analyze)。 EXPLAIN ANALYZE SELECT user_id, count(user_id) FROM treenode WHERE project_id=1 GROUP BY user_id; QUERY PLAN --------------------------------------------------------------------------------------------------------------------------- HashAggregate (cost=253668.70..253669.07 rows=37 width=8) (actual time=1747.620..1747.623 rows=38 loops=1) -> Seq Scan on treenode (cost=0.00..220278.79 rows=6677983 width=8) (actual time=0.019..886.803 rows=6677983 loops=1) Filter: (project_id = 1) Total runtime: 1747.653 ms ご覧のとおり、これには約1.7秒かかります。これは、データの量を考えるとそれほど悪くはありませんが、これを改善できるかどうかは疑問です。ユーザー列にBTreeインデックスを追加しようとしましたが、これは何の助けにもなりませんでした。 代替案はありますか? 完全を期すために、これはすべてのインデックスを備えた完全なテーブル定義です(外部キーの制約、参照、トリガーはありません)。 Column …

3
列が存在する場合は特定の行を、列が存在しない場合はすべての行を選択する方法
いくつかのテーブルの行数を取得するスクリプトを作成していますが、一部のテーブルでは、フラグが設定されている行数のみを取得したい(この場合はactive = 1)。1つのクエリでこれを行う方法はありますか? 例えば: テーブルusersにactiveという列があります テーブルにclientsactiveという列がありません active = 1のユーザーの数を取得し、クライアントの数を取得したいだけです。 あなたが言う前に「だけでハードコードは、それが」これは、多くの異なるデータベース上で実行することができPythonスクリプト内で起こっているクエリであり、私は私のスクリプトを選択し、それらが列を持っている場合に呼び出されますどのようなテーブル知る方法はありませんactiveし、 2つの別々のクエリではなく、1つのクエリだけですべてを実行し、mysqlに依存してエラーをスローすることで、もう1つのクエリを使用することができます。
23 mysql  select  count 

6
行の2つ以上の列が特定の値を超えている場所をカウントする[バスケットボール、ダブルダブル、トリプルダブル]
統計情報をデータベースファイルとして出力できるバスケットボールゲームをプレイしているので、ゲームに実装されていない統計情報を計算できます。これまでのところ、必要な統計を計算するのに何の問題もありませんでしたが、今では問題に直面しています:プレーヤーがシーズン中に作ったダブルダブルまたはトリプルダブルの数をゲーム統計からカウントすることです。 double doubleとtriple doubleの定義は次のとおりです。 ダブルダブル: ダブルダブルとは、プレイヤーがゲーム内で5つの統計カテゴリー(ポイント、リバウンド、アシスト、スチール、ブロックショット)のうち2つに合計2桁の数字を累積するパフォーマンスとして定義されます。 トリプルダブル: トリプルダブルとは、プレイヤーがゲーム内で5つの統計カテゴリー(ポイント、リバウンド、アシスト、スチール、ブロックショット)のうち3つに合計2桁の数字を累積するパフォーマンスとして定義されます。 Quadruple-double(明確にするために追加) 4倍ダブルは、プレーヤーがゲームで5つの統計カテゴリ(ポイント、リバウンド、アシスト、スチール、ブロックショット)の4つに合計2桁の数字を蓄積するパフォーマンスとして定義されます。 「PlayerGameStats」テーブルには、プレーヤーがプレイする各ゲームの統計が格納され、次のようになります。 CREATE TABLE PlayerGameStats AS SELECT * FROM ( VALUES ( 1, 1, 1, 'Nuggets', 'Cavaliers', 6, 8, 2, 2, 0 ), ( 2, 1, 2, 'Nuggets', 'Clippers', 15, 7, 0, 1, 3 ), ( 3, 1, 6, 'Nuggets', 'Trailblazers', …

3
InnoDBが行カウントを保存しないのはなぜですか?
InnoDBをエンジンとして使用するテーブルではSELECT COUNT(*) FROM mytable、特にテーブルが大きくなり、そのクエリの実行中に一定の行の挿入/削除がある場合、クエリは非常に不正確で非常に遅いことを誰もが知っています。 私が理解したように、InnoDBは行数を内部変数に保存しません。これがこの問題の原因です。 私の質問は:なぜこれがそうなのか?そのような情報を保存するのは難しいでしょうか?これは非常に多くの状況で知っておくべき重要な情報です。そのような内部カウントが実装されるかどうか私が見る唯一の難しさは、トランザクションが関与している場合です:トランザクションがコミットされていない場合、それによって挿入された行をカウントしますか? PS:私はDBの専門家ではなく、MySQLを単純な趣味として持っているだけの人です。だから、私がばかげたことを尋ねただけなら、過度に批判的にならないでください:D。
19 mysql  innodb  count 

3
count()を使用してパーセンテージを決定するPostgreSQL(キャストの問題)
次のクエリを実行してpatients、refinst列の値を持つテーブル内の行の%を提供しようとしています。結果が0のままになります。 select (count (refinst) / (select count(*) from patients) * 100) as "Formula" from patients; テーブルには15556行あり、そのうち1446行が列にselect count(refinst) from patients値を持っていることがわかりrefinstます。クエリから取得したい応答は30.62(1446/15556*100=30.62XXXXX小数点以下2桁に丸められます)になります。 カウント結果のデータ型(私が想定している整数)と関係があると確信しています。整数を整数で除算し、結果が0未満の場合、0に切り捨てられますか?その場合、カウントの結果を小数点以下2桁の数値としてキャストして、結果も小数点以下2桁に丸める方法を教えてもらえますか? このコードを書くには、複数のcountステートメントよりも良い方法があると確信しています。特にこのクエリを書くための、よりプロセッサ効率の良い方法を探しています。
19 postgresql  count  cast 

1
MySQLはテーブル内の各レコードの別のテーブルから行をカウントします
SELECT student.StudentID, student.`Name`, COUNT(attendance.AttendanceID) AS Total FROM student LEFT JOIN attendance ON student.StudentID = attendance.StudentID 私は最後の行を数えようとしていますが、代わりにすべての結果を数え、1つの結果を返します 私は次のようなものを得ています K1052280の出席IDに2つのエントリがあるため、複数のレコードがあるため、それらをカウントして番号を返します。何かのようなもの
19 mysql  select  count 

5
MySQLはNULLである/ NULLではない
次の表をご覧ください。 mysql> desc s_p; +-------------------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | s_pid | int(10) unsigned | YES | MUL | NULL | | | sm_id | int(10) …
18 mysql  count 

2
MySQL-行のカウントにcount(*)とinformation_schema.tablesを使用することの違い
数百万行のテーブル内の行数をすばやくカウントする方法が必要です。Stack Overflowで「MySQL:行数をカウントする最も速い方法」という投稿を見つけました。これは私の問題を解決するように見えました。バユアはこの答えを提供しました: SELECT table_rows "Rows Count" FROM information_schema.tables WHERE table_name="Table_Name" AND table_schema="Database_Name"; スキャンの代わりにルックアップのように見えるので私は好きでしたので、高速でなければなりませんが、テストすることにしました SELECT COUNT(*) FROM table パフォーマンスの違いがどれほどあったかを確認します。 残念ながら、以下に示すように異なる回答が得られます。 質問 回答が約200万行異なるのはなぜですか?全表スキャンを実行するクエリの方が正確な数値であると推測していますが、この遅いクエリを実行せずに正しい数値を取得する方法はありますか? 実行ANALYZE TABLE data_302しましたが、0.05秒で完了しました。クエリを再度実行すると、34384599行という非常に近い結果が得られますが、それでもselect count(*)34906061行と同じ数ではありません。分析テーブルはすぐに戻り、バックグラウンドで処理されますか?これはテストデータベースであり、現在は作成されていないことに言及する価値があると思います。 テーブルがどれだけ大きいかを誰かに伝えるだけの場合は誰も気にしませんが、その数字を使用してデータベースを照会する「同じサイズの」非同期クエリを作成するコードに行カウントを渡したいと思いました。並行して、「Alexander Rubinによるパラレルクエリの実行によるクエリパフォーマンスの低下」で示した方法に似ています。現状では、最高のIDを取得するだけでSELECT id from table_name order by id DESC limit 1、テーブルが断片化しすぎないように願っています。
15 mysql  mysql-5.6  count 

1
列のインデックスを作成するときに、このsqliteクエリがはるかに遅いのはなぜですか?
(偽の)人の名前を含む、それぞれ50,000行の2つのテーブルを持つsqliteデータベースがあります。両方のテーブルに共通する名前(名前、ミドルネームのイニシャル、姓)がいくつあるかを調べる簡単なクエリを作成しました。 select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial; 主キー以外にインデックスがない場合(このクエリとは無関係)、すぐに実行されます。 [james@marlon Downloads] $ time sqlite3 generic_data_no_indexes.sqlite "select count(*) from fakenames_uk inner join fakenames_usa on fakenames_uk.givenname=fakenames_usa.givenname and fakenames_uk.surname=fakenames_usa.surname and fakenames_uk.middleinitial=fakenames_usa.middleinitial;" 131 real 0m0.115s user 0m0.111s sys 0m0.004s しかし、各テーブルの3つの列にインデックスを追加する場合(全部で6つのインデックス): CREATE INDEX `idx_uk_givenname` ON `fakenames_uk` (`givenname` ) //etc. …

2
Explainが答えを知っているのに、なぜcount(*)が遅いのですか?
このクエリ:select count(*) from planner_event実行に非常に長い時間がかかります-とても長いので、終了する前にそれをgaveめて殺しました。ただし、実行するexplain select count(*) from planner_eventと、出力に列数(14m)の列が表示されます。 Explainが行数を即座に取得できるのに、count(*)の実行に時間がかかるのはなぜですか?
14 mysql  count  explain 

1
sys.partition.rows列はどれくらい正確ですか?
システムビューにsys.partitionsは、特定のパーティション内の行の総数である「行」列があります。パーティション化されていない(または見方によってはパーティションが1つしかない)テーブルの場合、この列はテーブル内の行数を示します。 私はこの列がどれほど正確か、そしての代わりにそれを使用できるかどうかに興味がありSELECT COUNT(1) FROM TableNameます。テーブルを作成して数千行を追加し、数百を削除し、さらに数千を追加するなど、いくつかの実験を行いましたが、カウントは常に無効になっています。ただし、約700ミリ行と複数のインデックスを持つ1つのテーブルがあります。sys.partitionsクラスター化インデックスの行は再び無効になりますが、他のインデックスにはわずかな変動(+ -20k)が見られます。 この行がどのように計算され、表示されるのと同じくらい正確かどうかは誰にもわかりますか?


2
特定の列に異なる値または複数の値を持つレコードのみを選択します
以下は私のメンバーシップ表の例です。電子メールフィールドに複数の値を持ついくつかのレコードがあります。複数のメール値を持つレコードのみを選択します。 メンバー表 ID LASTNAME FIRSTNAME EMAIL 567 Jones Carol carolj@gmail.com 567 Jones Carol caroljones@aol.com 678 Black Ted tedblack@gmail.com 908 Roberts Cole coleroberts@gmail.com 908 Roberts Cole coler@aol.com 908 Roberts Cole colerobersc@hotmail.com 結果を希望します: 567 Jones Carol carolj@gmail.com 567 Jones Carol caroljones@aol.com 908 Roberts Cole coleroberts@gmail.com 908 Roberts Cole coler@aol.com 908 Roberts Cole …
11 select  count  distinct 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.