2017-07-03 10 views
1

1日あたりの文書保存総量を取得しようとしています。しかし、私はどのように考えていない。 データベース内のデータとともに列が表示されます。上記PHP 1日あたりの総文書保存量を計算する

report_id doc_date total_doc 
- 1   2017-06-06 1 
- 2   2017-06-23 1 
- 3   2017-06-14 1 
- 4   2017-06-12 1 
- 5   2017-06-16 1 
- 6   2017-06-21 1 
- 7   2017-06-14 1 
- 9   2017-06-13 1 
- 10   2017-06-21 1 
- 11   2017-06-12 1 
- 12   2017-06-18 1 
- 13   2017-06-12 1 
..... 

は、

- 3   2017-06-14 1 
- 7   2017-06-14 1 

は私が計算し、総文書が日ごとに保存し表示しますSQLクエリを必要とする、例えば、同様の日付があります。だから2017年6月14日に、合計は2になるでしょう。 アイデアは? FYI total_docは自動的に1に等しくなります。 更新日: そして、その日に保存された文書の合計を表示します。

+0

何か試したことはありますか? – Blank

+0

はい、でも私はいつもエラーが出ます。私はmysqlの分野でプロではありません。 –

+0

その後、クエリとエラーを投稿してください。 – Blank

答えて

0
SELECT 
    doc_date, 
    count(doc_date) AS saves 
FROM documents 
GROUP BY doc_date 
ORDER BY doc_date ASC; 

OR

SELECT 
    doc_date, 
    sum(total_doc) AS saves 
FROM documents 
GROUP BY doc_date 
ORDER BY doc_date ASC; 

注意:あなたがちょうど1つの日付を表示したい場合は

その後、

1)最初のオプションを使用している場合、カラムtotal_docを削除できます。それは私の助言にもなります。 doc_dateカラムには、日付値の適切なmysql形式があります。したがって、あなたはそれに対して堅固な操作を行うことができます。

2)希望する場合は、降順で並べ替えることができます(doc_date)。

3)countまたはsumのような機能を使用するときに、(私がAS savesと同じように)列をエイリアスすることを忘れないでください。そのため、HAVINGフィルタも使用できます。したがって、このような何か - 日あたりの1つ以上のセーブを持つすべての文書:

SELECT 
    doc_date, 
    count(doc_date) AS saves 
FROM documents 
GROUP BY doc_date 
HAVING saves > 1 
ORDER BY doc_date ASC; 

そして、あなたはまた、指定した日に一つだけ保存された文書によってフィルタリングすることができます:

SELECT 
    doc_date, 
    count(doc_date) AS saves 
FROM documents 
WHERE doc_date = "2017-06-12" 
GROUP BY doc_date 
HAVING saves > 1 
ORDER BY doc_date ASC; 

4)またはあなたがすることができますまた、ご希望の場合はHAVINGdoc_dateを無視してください。それはあなたに指定された日に保存された文書を与えるでしょう。

SELECT count(doc_date) AS saves 
FROM documents 
WHERE doc_date = "2017-06-12" 
GROUP BY doc_date 
ORDER BY doc_date ASC; 
0

は(あなたのテーブルの名前にtable_nameを設定し)、これを試してみてください:

SET @row_count = 0; 
SELECT (@row_count:[email protected]_count+1) AS totalSaves FROM table_name WHERE doc_date='2017-06-14' 

最初の行は、変数を定義row_count、および0に設定します。

2行目はデータベースを経由し、日付が2017-06-14のすべての行を検索し、それぞれ1つずつrow_countをインクリメントします。

row_countに格納されたSELECTの最後の数値は、totalSavesというラベルの列に1行として格納されています。

あなたのテーブル名を使用して、テーブル

0
​​

変更TABLE_NAMEの名前に設定table_name

SELECT doc_date, sum(total_doc) AS total 
FROM table_name 
WHERE doc_date = '2017-06-14' 
GROUP BY doc_date 
関連する問題