問題タブ [aggregate-functions]
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 - スコアの発生回数をカウントする SQL Server Group By
これを説明するのは少し難しいかもしれませんが、SQL サーバー データベースには単純化した 2 つの列があります...
アイテム
ID
itemName
voteCount
スコア
投票
itemID
スコア
したがって、基本的には、1 つのテーブルに配置されたすべての投票を格納していますが、アイテム テーブル内の各アイテムの投票数のカウントと、その平均スコア (10 点満点中) も格納しています (データが重複していることはわかっていますが、物事をより簡単にします)。
とにかく、スコアが最も低い2つのアイテムを見つけるSQLクエリを作成したいと思います。これを行うだけなので、これは簡単だと思います...
ただし、クライアントは次の複雑さを追加しました。
2 つ以上の項目が同じスコアの場合、10/10 票の最高数の項目が上に配置されます。2 つ以上の項目が同じスコアで、同じ数の 10/10 票を持っている場合、他の項目よりも 9/10 票が多い項目がランク付けされます。それ以外は等しいです。
したがって、課題は、これらの基準によってすべてのアイテムをランク付けし、下位 2 を選択することです。これを解決するために、グループ化、集計、および「サブクエリ」のあらゆる組み合わせを試しましたが、もっと賢い人の助けが必要だと思います私より。
どんな助けでも本当に感謝します。
明確化
アイテムの平均スコアはアイテム テーブルに保存され、各投票に対するスコアは投票テーブルに保持されます。最初に、平均スコア (I.score) でランク付けする必要があり、2 つのアイテムが同じスコアを持つ場合、そのアイテムにリンクされた投票 (v.score) の 10/10 の数を数え始める必要があります。
したがって、平均スコアが 5/10 の「T シャツ」というアイテムがあるとします。これは、次のスコア 5、5、5、5、5、5 の 6 票から得られます。
次のアイテムは「フェラーリ」と呼ばれ、同じく平均スコアが 5/10 ですが、このアイテムは 4 票しかなく、次のスコアは 6,5,5,4 です。
SQL は 10 も 9 も 8 も 7 も持っていないことを確認するため、明らかにフェラーリが勝つはずですが、T シャツに勝る 6 票があります。
sql-server - SQLServer-個別の行ごとにテーブルとSUM列を結合します
誰かが私のSQLステートメントを再確認して適切な操作と一般的な常識的なアプローチを見つけることができますか?
状況は次のとおりです。AccountNumberKeyという名前の列に結合された、1対多の関係を持つ親子テーブルがあります。子テーブルには、合計する必要のある数値列があります。
データは、特定のAccountNumberKey値を持つすべての子レコードが、2つの数値列で常に同じ値を持つようになっています。これらのテーブルを結合し、AccountNumberKeyごとに、これら2つの列の合計を一時テーブルに入れます。各AccountNumberKeyを指定して、単一の子レコードの列を合計するだけで済みます。
以下のいくつかのサンプルデータは、これをより明確にするでしょう(私は願っています):
これが私のSQLステートメントです:
目標は、テーブルをリンクし、データを一時テーブルに配置して、次のようにすることです。
私のSQLクエリはマスターを渡しますか?グループ化に関しては私は天才ではなく、これがA)正しく、B)うまくいく方法なのか、それとももっと良い参加方法があるのか疑問に思いました。
ありがとう!
database - 別のテーブルの値を合計する必要がある列を設計しようとしています
タイトルがはっきりしない場合は申し訳ありません。私は今説明しようとします:
テーブルAとテーブルBの2つのテーブルがあります。それらの間の関係は1つ(Aテーブルの場合)から多数(Bテーブルの場合)です。だから、それはマスターディテールの状況のようなものです。テーブルBには明らかに10進数の列「Amount」があり、テーブルAには列「TotalAmount」があります。テーブルAの値を最新の状態に保つ方法を見つけようとしています。私の提案は、テーブルBからの金額をカウントする集計クエリを使用してテーブルAに基づいてビューを作成することです。もちろん、適切なインデックスを使用して...しかし、私のチームメイトは、テーブルAで何かを変更するたびに、テーブルAの値を更新することを提案します。アプリケーションの表B。ここで最善の解決策は何でしょうか?3番目のバリアントである可能性がありますか?
いくつかの説明...このテーブルは、データベースで最も急速に成長しているテーブルであると予想しました。そして、テーブルBはテーブルAよりもはるかに速く成長します。テーブルBで最も頻繁に行われる操作は、挿入です...そして他にはほとんど何もありません。表Aで最も頻繁に実行される操作は、選択されます...だけではありません。
linq-to-sql - Convert this SQL with count and grouping to linq2SQL
Can someone convert this query to linq2sql for me? Trying to teach myself linq to see if I want to use it for a small project, and getting hung up on the smallest details...
#xA;c# - この LINQ クエリは、効率的に書かれた時間ごとの平均化とグループ化を使用していますか?
これは、私の最初の実際の LINQ-to-SQL クエリです。大きな明らかな間違いを犯しているのではないかと思っていました。
データ、dataTypeID、machineID、dateStamp を含む中規模 (2M 以上のレコード、1 日に 13k を追加) のテーブルがあります。28 日間さかのぼって、4 時間以内にすべてのマシンと特定のデータ型のデータの平均、最小、最大を取得したいと考えています。
例えば
DateTime Avg Min Max
1/1/10 12:00AM 74.2 72.1 75.7
1/1/10 04:00AM 74.5 73.1 76.2
1/1/10 08:00AM 73.7 71.5 74.2
1/1/10 12:00PM 73.2 71.2 76.1
など.
1/28/10 午前 12:00 73.1 71.3 75.5
これまでのところ、平均を 1 時間ごとにグループ化することしかできませんでしたが、代替案が非常に乱雑な場合は、おそらくそれで対処できます。
コード:
c# - LINQ to DataSetの匿名クラスでクエリされたデータに基づく条件を使用するにはどうすればよいですか?
これを行うには、簡略化されたクエリの結果をループします。
しかし、それがLINQステートメント内で可能かどうかを知りたいです。
名前と値の2つのメンバーを持つ匿名クラス。名前はfield1に応じて「X」または「Y」であり、Valueは条件が満たされたレコードのすべてのfield2値の合計です。Count()メソッドを使用する必要があると思いますが、方法や場所がわかりません。一時テーブルからカウントを取得するには、「group」と「into」を使用する必要があるかもしれません。
(field1 == "value1")のレコードがある場合、文字列は "X"になり、そうでない場合、文字列は"Y"になります。
前もって感謝します!
sql - 集計関数 (NULL) の機能を表示するには?
NULL 値が含まれている場合の集計関数 (Max、Min、Sum、Avg、および Count) の顕著な特徴を説明するデータベースの「教科書」の例を探しています。
上記のデータベースを使用して、クエリの例とその回答を使用して、NULL が存在する場合のこれらの集計関数の使用法について説明し、説明/提示できる必要があります。
どうもありがとう!
sql - 半複雑な集約selectステートメントの混乱
さて、この問題は少し複雑なので、我慢してください。
データでいっぱいのテーブルがあります。テーブル列の1つはEntryDateです。1日に複数のエントリが存在する可能性があります。ただし、それぞれの日の最新のエントリであるすべての行を選択し、そのテーブルのすべての列を選択したいと思います。
列の1つは一意の識別子列ですが、主キーではありません(なぜそこにあるのかわかりません。これは、かなり古いシステムです)。デモンストレーションの目的で、テーブルが次のようになっていると言います。
主キーはPersonIDとStoreIDにあり、これらは論理的に一意性を定義します。
さて、私が言ったように、私はその特定の日の最新のエントリであるすべての行を選択したいと思います(Person-Storeの組み合わせごとに)。これは非常に簡単です。
ここで、dbo.dayof()は、日時から時間コンポーネントを取り除く単純な関数です。ただし、これを行うと、残りの列が失われます。他の列を単純に含めることはできません。そうすると、group by
それらを含める必要があり、間違った結果が生成されるためです(特に、IDが一意であるため)。
私は自分がやりたいことをする汚いハックを見つけましたが、もっと良い方法があるはずです-これが私の現在の解決策です:
これで正しいデータが得られます#StagingTable
が、よく見てください。null値を使用してテーブルを作成し、更新を実行して値を元に戻します。これを行うためのより良い方法は確かにありますか?初めてすべての値を取得する単一のステートメント?
select
そのオリジナル(図1)に正しく結合すると、自己結合などのトリックが実行されると私は信じています...しかし、このgroup by
句をどのように使用しますか?クエリを実行するための正しい構文が見つかりません。
私はSQLにかなり慣れていないので、明らかな何かが欠けている可能性があります。助言がありますか?
(違いが生じる場合は、T-SQLでの作業)
sql-server - SQL Server: PARTITION BY と GROUP BY の違い
私は長年GROUP BY
にわたり、あらゆる種類の集計クエリに使用してきました。PARTITION BY
最近、集計の実行に使用するコードのリバース エンジニアリングを行っています。について見つけることができるすべてのドキュメントを読むPARTITION BY
と、 によく似ているように聞こえますがGROUP BY
、少し追加の機能が追加されているのではないでしょうか? それらは同じ一般的な機能の 2 つのバージョンですか、それともまったく異なるものですか?
lookup - SSRS2008最大注文の顧客名を検索する必要があります
日ごとにグループ化された注文のテーブルを含むSSRSレポートを作成しています。これで、SSRS MAX()関数を使用して、その日の最大注文値を簡単に取得し、グループヘッダーに配置できます。
ただし、この注文を行った対応する顧客名も取得し、これをグループヘッダーにも配置したいと思います。
結果セットには、日付、名前、注文値が含まれていると想定できます。SSRS 2008でこれを行う方法はありますか?
ありがとう