0

私はテーブルを持っています。

Artist     Title      Song Key   Easytosing
A          Title A    A          No
A          Title A    B          Yes
A          Title A    F          Yes
B          Title B    A          Yes
C          Title C    F#         No

「easytosing」とタグ付けされた個々の曲を返したいだけでなく、その曲のバージョンがいくつあるかも表示したい a) easytosing b) 合計例 理想的な結果は次のようになります。

Artist     Title       How_many_tot    How_many_easy
A          Title A     3               2
B          Title B     1               1

以下を使用して、歌いやすい数を示すことができます。

SELECT *, count(*) as How_many_easy from tracks
where easytosing='Yes' 
group by artist,title 
order by artist asc

両方を表示して、クエリが easytosing のみを選択し、すべてをカウントする方法はありますか?

4

5 に答える 5

4
select count(*) HOW_MANY_TOT,
       sum(case EASYTOSING when 'Yes' then 1
                else 0
            end case) HOW_MANY_EASY
       ARTIST,
       TITLE
  from TRACKS
 group by ARTIST, TITLE
having HOW_MANY_EASY > 0
于 2013-09-02T09:20:38.163 に答える
1
SELECT
  Artist,
  Title,
  COUNT(*) How_many_tot,
  SUM(Easytosing='yes') how_many_easy
FROM
  tracks
GROUP BY
  Artist, Title
HAVING
  SUM(Easytosing='yes')>0

ここでフィドルを参照してください。

于 2013-09-02T09:22:12.230 に答える
0

サブクエリにして、where句を追加してみましたか?

SELECT countTable.*, 
       count(*) as How_many_easy
FROM 
(
    SELECT Artist, 
           Title, 
           MAX(easytosing) as easytosing,
           count(*) as How_many_total 
    from tracks
    group by artist,title 
) countTable ON tracks.Artist
where easytosing='Yes'
group by artist,title 
order by artist asc

注: MAX(easytosing) は、そのようなレコードが存在する場合は「はい」を返し、そうでない場合は「いいえ」を返す必要があります。

于 2013-09-02T09:28:50.237 に答える
0

一意の ID (auto_increment、私のクエリでは ID を呼び出します) をタルベに追加する必要があります。その後、必要な情報を取得できます。

select tall.artist, tall.title, count(distinct tall.ID) as total, count(distinct teasy.ID) as easy from tracks as tall
left join tracks as teasy on teasy.artist=tall.artist and teasy.title=tall.title and teasy.easytosing='Yes'
group by tall.artist, tall.title
于 2013-09-02T09:34:48.500 に答える