簡體   English   中英

SQLite:不斷收到錯誤'near'(':語法錯誤'

[英]SQLite: keep getting the error 'near '(': syntax error '

我有這段代碼,它利用基本的 chinook 數據庫來創建一個名為 BestSeller 的視圖,用於每個流派的暢銷專輯,其中包含以下列:流派、專輯、藝術家、銷售額。

這是我到目前為止寫的代碼

CREATE VIEW vBestSellingGenreAlbum  AS SELECT DISTINCT 
   g.Name Genre, 
   FIRST_VALUE(a.Title) OVER (PARTITION BY g.GenreId ORDER BY COUNT(*) DESC) Album, 
   FIRST_VALUE(r.Name) OVER (PARTITION BY g.GenreId ORDER BY COUNT(*) DESC) Artist, 
   MAX(COUNT(*)) OVER (PARTITION BY g.GenreId) Sales
FROM genres g
INNER JOIN tracks t ON t.GenreId = g.GenreId
INNER JOIN albums a ON a.AlbumId = t.AlbumId
INNER JOIN artists r ON r.ArtistId = a.ArtistId
INNER JOIN invoice_items i ON i.TrackId = t.TrackId
GROUP BY g.GenreId, a.AlbumId;
SELECT * FROM vBestSellingGenreAlbum;

我查看了它並沒有發現語法錯誤。 但是,當我嘗試運行它時,我收到錯誤'near '(': syntax error'

任何幫助將不勝感激!

對於 3.25.0 之前的 SQLite 版本,您可以使用 2 個級別的聚合並利用 SQLite 的裸列功能:

SELECT Genre, Album, Artist, MAX(Sales) Sales
FROM (
  SELECT g.Name Genre, 
         a.Title Album, 
         r.Name Artist, 
         COUNT(*) Sales
  FROM genres g
  INNER JOIN tracks t ON t.GenreId = g.GenreId
  INNER JOIN albums a ON a.AlbumId = t.AlbumId
  INNER JOIN artists r ON r.ArtistId = a.ArtistId
  INNER JOIN invoice_items i ON i.TrackId = t.TrackId
  GROUP BY g.GenreId, a.AlbumId
)
GROUP BY Genre;

請參閱演示

如果您使用的是 Linux,請檢查您的 LD_LIBRARY_PATH 以獲取 sqlite lib > 3.25。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM