1

FirstExtracted特定の日付のすべてをカウントする必要がありLastExtracted、同じ日付のすべてをカウントする必要があります。したがって、今日はすべてのFirstExtractedLastExtracted等しいが必要2012-10-24です。

ここに私がこれまでに持っているものがありますが、それは持ち上がりませんLastExtractedLastExtracted次と同じカウントを出力しFirstExtractedます。

(SELECT LastExtracted,FirstExtracted,
COUNT(FirstExtracted) AS FirstCount,
COUNT(LastExtracted) AS LastCount,
DATE_FORMAT(`LastExtracted`,'%Y-%m-%d') AS Lastdate,
DATE_FORMAT(`FirstExtracted`,'%Y-%m-%d') AS Firstdate 
FROM results
WHERE DATE_FORMAT(`FirstExtracted`,'%Y-%m-%d') = DATE_FORMAT(`LastExtracted`,'%Y-%m-%d'))
UNION ALL
(SELECT LastExtracted,FirstExtracted,
COUNT(FirstExtracted) AS FirstCount,
COUNT(LastExtracted) AS LastCount,
DATE_FORMAT(`LastExtracted`,'%Y-%m-%d') AS Lastdate,
DATE_FORMAT(`FirstExtracted`,'%Y-%m-%d') AS Firstdate 
FROM results
WHERE DATE_FORMAT(`FirstExtracted`,'%Y-%m-%d') = DATE_FORMAT(`LastExtracted`,'%Y-%m-%d') GROUP BY Firstdate) 
ORDER BY Firstdate DESC
LIMIT 20

内部結合を使用する必要がありますか?

更新:あなたのクエリを使用して、私のために何か他のことをするためにいくつかの変更を加えました。このページを見ると、クエリを作成します

semesterold.com/code2.html

すべてのタイトルと GROUP BY アーティストをカウントしたい。それは配列になります。次に、アーティストによって一致する検索タイプによってサブクエリをカウントする必要があります。データベースにエイコン、リアーナ、クリス・ブラウンがいる場合。各アーティストが持っているタイトルの数を数えたい、たとえば akon が 100 を持っているとします。次に、タイトルの数を表示し、それらの 100 のタイトルのうち、Google、bing、akon に固有のサイトなどの数を数えたいと考えています。

4

2 に答える 2

0

ユニオンを使用して2つの結果(FirstExtractedとLastExtracted)を別々に取得し、サブクエリを使用してそれらをマージします。

SELECT
    sub.date, sum(sub.FirstCount) AS FirstCount,
    sum(sub.LastCount) AS LastCount 
  FROM (
      SELECT
          DATE_FORMAT(`FirstExtracted`,'%Y-%m-%d') AS date,
          COUNT(FirstExtracted) AS FirstCount, 0 AS LastCount
        FROM results
        GROUP BY date
      UNION ALL
        SELECT
            DATE_FORMAT(`LastExtracted`,'%Y-%m-%d'),
            0, COUNT(LastExtracted)
          FROM results
          GROUP BY date
    ) AS sub 
    GROUP BY sub.date

今日初めて220のエントリが抽出され、今日最近抽出された292のエントリがあるとします。他の日付のエントリの中で、これはあなたに与えるでしょう:

+------------+------------+-----------+
| date       | FirstCount | LastCount |
+------------+------------+-----------+
| 2012-10-24 |        220 |       292 |
+------------+------------+-----------+

更新UNION単独では、次の結果が得られます。プレースホルダーがゼロであることに注意してください。

+------------+------------+-----------+
| date       | FirstCount | LastCount |
+------------+------------+-----------+
| 2012-10-24 |        220 |         0 |
+------------+------------+-----------+
| 2012-10-24 |          0 |       292 |
+------------+------------+-----------+
于 2012-10-24T17:17:47.970 に答える
0

クエリに追加することをお勧めしDISTINCTます:

(SELECT LastExtracted,FirstExtracted,
COUNT(DISTINCT FirstExtracted) AS FirstCount,
COUNT(DISTINCT LastExtracted) AS LastCount,
DATE_FORMAT(`LastExtracted`,'%Y-%m-%d') AS Lastdate,
DATE_FORMAT(`FirstExtracted`,'%Y-%m-%d') AS Firstdate 
FROM results
WHERE DATE_FORMAT(`FirstExtracted`,'%Y-%m-%d') = DATE_FORMAT(`LastExtracted`,'%Y-%m-%d'))
UNION ALL
(SELECT LastExtracted,FirstExtracted,
COUNT(DISTINCT FirstExtracted) AS FirstCount,
COUNT(DISTINCT LastExtracted) AS LastCount,
DATE_FORMAT(`LastExtracted`,'%Y-%m-%d') AS Lastdate,
DATE_FORMAT(`FirstExtracted`,'%Y-%m-%d') AS Firstdate 
FROM results
WHERE DATE_FORMAT(`FirstExtracted`,'%Y-%m-%d') = DATE_FORMAT(`LastExtracted`,'%Y-%m-%d') GROUP BY Firstdate) 
ORDER BY Firstdate DESC
LIMIT 20
于 2012-10-24T16:33:24.457 に答える