0

予約テーブル (属性: 名前、日、開始日、終了日) に対して SQL クエリを実行すると、days 属性の重複する値が見つかります。

SELECT day, COUNT(day) as NumberOfTimes 
FROM reservation group by day HAVING (COUNT(day)>1) 
ORDER BY NumberOfTimes

ただし、日のみが返され、その日の回数が予約テーブルにリストされます。その日にリストされているすべての名前をリストに戻そうとしていますが、クエリのグループ化に問題があります。これにどのようにアプローチする必要がありますか? リターンを次のようにしたいです:

BOB   MONDAY  3
JOHN  MONDAY  3
STEVE MONDAY  3
ALICE WEDNESDAY 2
MARTIN WEDNESDAY 2

御時間ありがとうございます!

4

2 に答える 2

1

名前の列を追加できません

SELECT
  name,
  day,
  COUNT(day) as NumberOfTimes
FROM reservation
group by name , day
HAVING (COUNT(day) > 1)
ORDER BY NumberOfTimes
于 2013-02-06T19:51:35.437 に答える
1

に含まれていない列をさらに追加できるサブクエリを使用できますGROUP BY

select r1.name,
    r2.day,
    r2.NumberOfTimes
from reservation r1
inner join
(
    SELECT day, COUNT(day) as NumberOfTimes 
    FROM reservation 
    group by day 
    HAVING (COUNT(day)>1) 
) r2
    on r1.day = r2.day
order by NumberOfTimes 

追加の列として名前のみが必要な場合は、次を使用できます。

SELECT name, day, COUNT(day) as NumberOfTimes 
FROM reservation 
group by day, name
HAVING (COUNT(day)>1) 
order by NumberOfTimes 
于 2013-02-06T19:52:14.840 に答える