長年の読者、初めてのポスター。ある値(列'product_group'にあります)が繰り返される時間のカウントを収集する必要があるテーブルが1つあり、別の列('product_type')の値も考慮する必要があります。
私は長い間フォーラムを検索してきましたが、これが今のところ思いついたものです...私の問題は、これが最も効率的な方法ではないと感じていることです。また、条件付きの一致するものがない場合(たとえば、else条件)はカウントできません。
SELECT
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product1%', 1, 0)) AS Value1,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product2%', 1, 0)) AS Value2,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product3%', 1, 0)) AS Value3,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product4%', 1, 0)) AS Value4,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product5%', 1, 0)) AS Value5,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product6%', 1, 0)) AS Value6,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product7%', 1, 0)) AS Value7,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product8%', 1, 0)) AS Value8,
SUM(product_group NOT LIKE '%Product9%') AS Value9,
SUM(IF(record_type LIKE '%TypeA%', 1, 0)) AS Value10
FROM
[tables]
WHERE
[conditions]
それに関する私の目的は、加重ユーザーの生産性を見つけることです。したがって、ユーザーが特定の製品を処理するたびに計算します。製品の種類に応じて、複雑さを考慮して値を変更します(元の値の0.83から1.25に)。さまざまな製品の重量がすべて「クランチ」されたら、それらをすべて追加してから、作業時間で割ります。
計算は、私のPHPコードのSQLクエリの外部で行われます。以前の方法ではなく、WHEREセクションの条件を使用して複数の順次SQLクエリを実行する方がよいのではないかと考えていました。このような場合は次のようになります...
SELECT
COUNT(*)*0.95 as `Value1`
FROM
[tables]
WHERE
record_type NOT LIKE '%TypeA%'
AND product_group LIKE '%Product1%'
[other conditions]
そして、他のすべての10かそこらの値に対して繰り返します...
だから、それはほとんどそれを要約します。私が考えることができるすべてのリソースをかなり使い果たしたので、あなたが私と共有することができるどんな提案、ヒント、リンクも大いに感謝されるでしょう。
よろしく