[英]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.