さて、私の要件はかなり単純です。私はそのようなテーブルを持っています。
images | videos | reviews
--------------------------------------------------
0 | 2 | 1
4 | 5 | 0
11 | 1 | 4
0 | 1 | 7
に等しくない各列の行をカウントし、列0
の数値の実際の合計を与えるクエリを作成する必要があります。したがって、結果は次のようになります。
Columns | Counts | Sum
----------------------------------------------------
images | 2 | 15
videos | 4 | 9
reviews | 3 | 13
これはSQLで直接可能ですか?アプリケーションレベルで合計を計算したくありません。これまでのところ、このクエリを作成しましたが、合計部分がなくても問題なく動作します。
SELECT 'images', SUM(images != 0)
FROM dpsreport where publisherId = 91
UNION
SELECT 'videos', SUM(videos != 0)
FROM dpsreport where publisherId = 91
UNION
SELECT 'reviews', SUM(reviews != 0)
FROM dpsreport where publisherId = 91;
SUM
クエリでは、数学的な加算のように、実際の合計ではなく、行の数が表示されることに注意してください。
私はこれがあなたが望むことをするだろうと思います:
SELECT 'images' as `columns`, SUM(images <> 0) as counts, SUM(images) as `sum`
FROM dpsreport where publisherId = 91
UNION ALL
SELECT 'videos', SUM(videos <> 0), SUM(videos)
FROM dpsreport where publisherId = 91
UNION ALL
SELECT 'reviews', SUM(reviews <> 0), SUM(reviews)
FROM dpsreport where publisherId = 91;
ノート:
<>
なくです!=
(多くのデータベースは両方をサポートしていますが)。UNION ALL
ではなくを使用しますUNION
(この場合は無視できます)。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加