問題タブ [gaps-and-islands]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - GROUP BY および連続した数値の集計
PostgreSQL 9.0 を使用しています。
company
、profession
およびのフィールドを含むテーブルがあるとしyear
ます。一意の会社と職業を含む結果を返したいのですが、数値シーケンスに基づいて年を集計します (配列に入れることは問題ありません)。
例の表:
次のような行を出力するクエリに興味があります。
重要な特徴は、連続した年のみがグループ化されることです。
mysql - Mysql クエリの時系列のギャップを埋める最良の方法
mysql クエリの結果セットの時系列のギャップを埋める必要があります。時系列のすべてのデータ ポイントを含むヘルパー テーブルを使用して外部結合を実行するオプションをテスト中です (このスレッドで示されているように: MySQL で日付のギャップを埋めるには? )。
私が直面している問題は、この結合を追加すると、クエリの応答時間が大幅に増加することです (サブ 1 秒から 90 秒になります)。
元のクエリは次のとおりです。
ヘルパー テーブル (month_fill) への外部結合を追加したクエリを次に示します。
クエリを再構築してパフォーマンスを向上させることはできますか?探しているものを達成するための代替ソリューションはありますか?
11/15 更新:
最初のクエリの EXPLAIN 出力は次のとおりです。
2 番目のクエリの EXPLAIN 出力は次のとおりです。
sql - Postgresの連続する列の「実行」をクエリする
私はテーブルを持っています:
イベントが与えられると、そのイベントで始まるイベントの「実行」の長さを返すことができるというステートメントを作成したいと思います。実行は次のように定義されます。
- 2つのイベントが互いに30秒以内にある場合、それらは一緒に実行されます。
- AとBが一緒に実行され、BとCが一緒に実行されている場合、AはCと一緒に実行されています。
ただし、クエリを過去にさかのぼる必要はないため、イベント2を選択した場合、イベント2、3、および4のみが、2で始まるイベントの実行の一部としてカウントされ、3は実行の長さ。
何か案は?私は困惑しています。
sql - SQL は列から範囲を返す必要があります
ギャップがある可能性のある値を持つ ID という名前の整数列を持つテーブルがあります (例: 1,2,3,4,7,8,10,14,15,16,20)
上記の例で、次の結果になるクエリを見つけたいと思います。
1-4 7-8 10 14-16 20
=更新=
以下のコード (SQL Server でうまく動作するようです) のおかげで、目標である MS-Access でこれを動作させることに非常に近づいていると感じています。私は理解できない私のステートメントでまだ構文エラーが発生しています...
SELECT VAL FROM (
) tbl として PORTID ASC で注文
sql - SQL-ほとんど順序付けられた順次系列で欠落しているint値を検索します
私はメッセージベースのシステムを管理しています。このシステムでは、一意の整数IDのシーケンスが一日の終わりに完全に表されますが、必ずしも順番に到着するとは限りません。
SQLを使用して、このシリーズで欠落しているIDを見つけるためのヘルプを探しています。列の値が次のようなものである場合、このシーケンスで欠落しているIDを見つけるにはどうすればよいですか?この場合はどうすればよい6
ですか?
シーケンスは毎日任意の時点で開始および終了するため、実行ごとに最小値と最大値が異なります。Perlのバックグラウンドから来て、そこにある正規表現を使用します。
助けていただければ幸いです。
編集:オラクルを実行します
Edit2:ありがとう。来週、オフィスでソリューションを実行します。
Edit3:とりあえず、ORIG_IDが元のID列、MY_TABLEがソーステーブルのようなものに落ち着きました。私のデータを詳しく見ると、文字列内の数値データだけでなく、さまざまなケースがあります。場合によっては、数字以外の文字の接頭辞または接尾辞があります。その他の場合、数値IDにダッシュまたはスペースが混在しています。これを超えて、IDは定期的に複数回表示されるため、個別に含めました。
特に非数字文字を取り除く最良のルートに関して、さらに入力をいただければ幸いです。
sql - ユーザーIDなどに応じた「スロット」SQL
このようなテーブルがあります
id アイテム ユーザー スロット
SLOT をユーザー ID に依存させたい。
4つの列がある場合
新しいアイテムを追加すると、自動的にスロット 5 が割り当てられるはずです。しかし、最初に、たとえば、削除した場合 (スロット 2 を削除するか、別のスロットに移動すると、新しいアイテムはスロット番号 2 を取得する必要があります。これは SQL で可能ですか?
スロットは基本的に「アイテム」列が配置される位置です。
インベントリは次のようになります。
1 ~ 20 の数字はスロットです。たとえば、上の 4 つのスロットがアイテムによって占有されている場合、次のアイテムには 5 を割り当てる必要があります。しかし、アイテム (スロット 2 など) をスロット 20 のように移動すると、次のアイテムは番号 2 に配置する必要があります。今は取られていません。3 と 4 の両方が削除され、アイテムが追加された場合、3 に配置されます。
mysql - MySQLレコードセットのIDギャップをどのように見つけることができますか?
ここでの問題は、私が持っていた別の質問に関連しています...
私は何百万ものレコードを持っていますが、それらの各レコードのIDは自動的にインクリメントされますが、残念ながら、生成されたIDが破棄されることがあるため、ID間には多くのギャップがあります。
ギャップを見つけて、放棄されたIDを再利用したいと思います。
MySQLでこれを行うための効率的な方法は何ですか?
sql-server - 時間のリスト内のシーケンスアイランドに基づく行のクロス集計
質問のタイトルを書くだけで頭が痛くなります!
我慢してください!次のDDLおよびダミーデータを参照してください。
ここで、ダミーデータを次のようにレンダリングする必要があります。
ご覧のとおり、Branch、Date、EntryCountに基づいて島を分割するように注意しながら、島の開始時刻と終了時刻を別々の列として抽出する必要があります。単純な数値シーケンスを扱うときにこれを行うための巧妙な解決策を見てきましたが、このシナリオに適合させることはできません。皆さんがこれにどのようにアプローチするのか興味があります。
SQLServer2008以降を使用しています
ブランチが変更されたため、日付、またはカウントのいずれかによる島の境界を示すスクリーンショット