1

私は現在SQLiteで作業しており、このクエリでびっくりしています

    SELECT Cur.Name, SUM(Cur.Added+Cur.Removed) AS Lines, COUNT(DISTINCT(Cur.Author)) AS authCurrent,
       ( SELECT COUNT(DISTINCT(Author)) 
         FROM Change
         WHERE Extencion = "java" AND
             Date >= date('2012-04-08') AND
             Date < date('2012-04-15')
         ) AS totCurrent
    FROM 
       Change AS Cur,
       ( SELECT a.Name, COUNT(DISTICT(a.Author)) AS authLast
         FROM Change AS a
         WHERE a.Extencion = "java" AND
           a.Date >= date('2012-04-08') AND
           a.Date < date('2012-04-15')
       GROUP BY a.Name ) AS Previous
    WHERE
       Previous.Name = Cur.Name
       Cur.Extencion = "java" AND
       Cur.Date >= date('2012-04-15') AND
       Cur.Date < date('2012-04-22')
   GROUP BY Cur.Name

SQLite はネストされたクエリをサポートしていないため、クエリが実行できない可能性がありますか?

とにかく、テーブルの変更には次の形式があります

      Author | Path | Extencion | Name | Date | Added | Removed
4

1 に答える 1

1

この行のスペルがDISTINCT間違っているようです。

COUNT(DISTICT(a.Author)) AS authLast  -- change to DISTINCT

また、次の方法でクエリを試しましたか。

SELECT Cur.Name, 
  SUM(Cur.Added+Cur.Removed) AS Lines, 
  COUNT(DISTINCT(Cur.Author)) AS authCurrent,
  Previous.authLast AS totCurrent
FROM Change AS Cur
LEFT JOIN 
( 
  SELECT a.Name, COUNT(DISTINCT(a.Author)) AS authLast
  FROM Change AS a
  WHERE a.Extencion = "java" AND
    a.Date >= date('2012-04-08') AND
    a.Date < date('2012-04-15')
  GROUP BY a.Name
) AS Previous
  ON Previous.Name = Cur.Name
WHERE 
       Cur.Extencion = "java" AND
       Cur.Date >= date('2012-04-15') AND
       Cur.Date < date('2012-04-22')
GROUP BY Cur.Name, Previous.authLast
于 2013-01-14T10:10:45.977 に答える