2017-04-03 70 views
3

我有一個我想查詢的Sqlite數據庫。我的基本知識SQL使我查詢我最需要的,但我困在這裏:(!簡體)使用多列的頂級條目的SQL查詢

表看起來是這樣的:

| Name   | Year | Title | Musician 1 | Musician 2 | 
| --------------- | ---- | ------- | ---------- | ----------- | 
| Doe, Jon  | 2007 | Title 1 | Beatles | The Stooges | 
| May, Peter  | 2001 | Title 2 |   | Beatles  | 
| Schmidt, Andrea | 1997 | Title 3 | Nick Cave |    | 

我希望能夠查詢Top Musician in the 2000s並獲得像

| Name  | Count | 
| ----------- | ----- | 
| Beatles  | 2  | 
| The Stooges | 1  | 

的輸出,你會如何archieve呢?謝謝!

回答

3

如果我正確的理解,你需要這個

select count(*), name from (
    select Musician_1 as Name from table where Year >= 2000 
    union all 
    select Musician_2 as Name from table where Year >= 2000 
) t 
group by Name 
order by count(*) desc 
+0

這工作不錯,我和我認爲這是比較容易的答案,我能夠改變我自己的條件等等,同時也是我所做的事情。我必須多看看'union'多謝了! – kbecker87

+0

@ kbecker87 - 不用客氣,請注意,如果「2000年代」意味着2000年到2010年之間的年份(根據@scaisEdge),那麼你應該改變......年份= 2000年...... 2000年至2010年之間「。否則,這個查詢會在2000年後給你所有的記錄。快樂的編碼。 –

2

你可以使用UNION ALL

select musician, count(*) from (

     select year, musician_1 as musician 
     from my_table 
     union all 

     select year, musician_2 
     from my_table 
) t 
    where t.year between 2000 and 2010 
    group by t.musician 
+0

感謝您的回答,這也很好! – kbecker87