表 1: マッピング テーブル (これには、タグと文のマッピングが含まれます)
id tag_id sentence_id
1 10 30
2 11 40
表 2 レポート
sentence_id DATE property (sentences may repeat)
30 timestamp1 property1
30 timestamp2 property2
40 timestamp3 property1
時間ごとにグループ化されたタグ ID とタグの数を取得しようとしています。
このクエリを試しました
SELECT DISTINCT(tag_id),COUNT(tag_id) AS cnt, MONTH(DATE) AS mnt
FROM mappingtable
INNER JOIN reports
ON mappingtable .sentence_id=reports.sentence_id AND reports.property= 'property1' GROUP BY tag_id,mnt ORDER BY cnt DESC;
ただし、レポート テーブルで文が繰り返される場合 (通常はそうです)、タグの数が間違っています。
編集:
編集
以下に提案されたクエリを試しました:
SELECT M.tag_id, COUNT(M.tag_id) AS cnt, MONTH(R.DATE) AS mnt FROM mappingtable M INNER JOIN reports R ON M.sentence_id = R.sentence_id AND R.property = 'property1' GROUP BY M.tag_id, MONTH(R.DATE) ORDER BY COUNT(M.tag_id) DESC;
このクエリでも、文 ID が繰り返されるため、追加のカウントが得られます。
私が必要としているのは、月ごとにグループ化されたプロパティ property1 の一意の文と、それらの文のタグ数です。
tag_id cnt mnt
60865 145 11
60869 99 11
60994 74 11
61163 74 11