2

現在、次のように2つのテーブルに編成されたデータがあります。

ミーティング
meet_id
meet_category

注文
order_id
meet_id
order_date

会議の総数、「長期」のカテゴリの会議の数、および「短期」のカテゴリの会議の数を返す単一のクエリを作成する必要があります。2011 年 3 月 1 日以降に少なくとも 1 つの order_date がある会議のみをカウントします。

出力は 3 つのフィールドと 1 つの行にある必要があります

これまでのところ、私が持っているものは次のとおりです。

SELECT COUNT(m.meet_id),
COUNT(SELECT m.meet_id WHERE m.meet_category = 'long'),
COUNT(SELECT m.meet_id WHERE m.meet_category = 'short')
FROM Meetings m
INNER JOIN Orders o
ON m.meet_id = o.meet_id 
WHERE o.order_date >= '2011-03-01'; 

それが最初に頭に浮かぶことですが、このクエリは機能せず、私のアプローチが正しいかどうかさえわかりません。すべての助けに感謝します!

4

3 に答える 3

1

これを試して:

SELECT COUNT(m.meet_id),
SUM(CASE WHEN m.meet_category = 'long' THEN 1 ELSE 0 END),
SUM(CASE WHEN m.meet_category = 'short' THEN 1 ELSE 0 END)
FROM Meetings m where  meet_id in 
    (select meet_id
    FROM Orders o
    WHERE o.order_date >= '2011-03-01'); 
于 2013-08-29T09:32:27.150 に答える
0

これを試して

select count(1) as total_count,innerqry.*

(
select count(m.meet_id), meet_catagory
Meetings m
INNER JOIN Orders o
ON m.meet_id = o.meet_id 
and m.meet_id in 
(select meet_id from orders where order_date>= '2011-03-01')

group by meet_category
) innerqry

1 行だけが必要で、既知の会議の種類がほとんどない場合は、これを試してください

SELECT COUNT(m.meet_id),
SUM(CASE WHEN m.meet_category = 'long' THEN 1 ELSE 0 END),
SUM(CASE WHEN m.meet_category = 'short' THEN 1 ELSE 0 END)
FROM Meetings m
INNER JOIN Orders o
ON m.meet_id = o.meet_id 
WHERE  m.meet_id in 
(select meet_id from orders where order_date>'2011-03-01')
于 2013-08-29T09:32:43.790 に答える
0

これを試して:

SELECT COUNT(m.meet_id),
(select count(*) from meetings m2 join orders o2 on o2.meet_id = m2.meet_id where m2.meet_category = 'long' and o2.order_date >= '2011-03-01'),
(select count(*) from meetings m2 join orders o2 on o2.meet_id = m2.meet_id where m2.meet_category = 'short' and o2.order_date >= '2011-03-01')
FROM mettings m
INNER JOIN Orders o
ON m.meet_id = o.meet_id
WHERE o.order_date >= '2011-03-01';

2 つの独立したサブクエリを実装する必要があります。これは、meet_id でグループ化せずにメイン クエリで合計数を取得する必要があるためです。サブクエリをメイン クエリのフィールドにリンクしようとすると、フィールドでグループ化されたというエラーが発生します。

于 2013-08-29T09:45:15.503 に答える