テーブルSales
のフィールドは、code, amount, index, name
です。SQLクエリの最大値と最小値
name
の場合は、最小値と最大値をそれぞれamount
、最小値と最大値の値をそれぞれcode
とする必要があります。
誰かが質問の作成に手伝ってもらえますか?
テーブルSales
のフィールドは、code, amount, index, name
です。SQLクエリの最大値と最小値
name
の場合は、最小値と最大値をそれぞれamount
、最小値と最大値の値をそれぞれcode
とする必要があります。
誰かが質問の作成に手伝ってもらえますか?
名あたりの最小値と最大量を見つけるために:CTEとROW_NUMBER()が利用可能な場合は
select *
from sales s
where
(amount = (select
max(s1.amount)
from sales s1
where s1.name = s.name)
or
amount = (select
min(s2.amount)
from sales s2
where s2.name = s.name)
)
大丈夫ですが、私は1つのクエリでそれをしたいと、すべてのフィールド '名前'のために私はそれにどのように参加することができますか教えてください?私は外部結合を使用しようとしましたが、それは私にとってはうまく機能しませんでした – BKl
'name'のすべての値が必要な場合は、 'name = 'given_name''の条件を安全に削除できます。 –
@BKl 'name'のすべての値に対してクエリを追加しますか? –
:
select
name
min(amount), max(amount)
from
sales
group by name
をして(minとmax)の両方を取得すると、単一のクエリ内のコードあなたへ。
次のことを試して、これはPostgresのであると仮定すると、with S as
(
select Amount,
Code,
row_number() over(order by Amount asc) as rn1,
row_number() over(order by Amount desc) as rn2
from Sales
where Name = 'SomeName'
)
select SMin.Amount as MinAmount,
SMin.Code as MinCode,
SMax.Amount as MaxAmount,
SMax.Code as MaxCode
from S as SMin
cross join S as SMax
where SMin.rn1 = 1 and
SMax.rn2 = 1
:
select name,
amount,
code,
case when min_rank=max_rank then 'Minimum and Maximum'
when min_rank=1 then 'Minimum'
else 'Maximum'
end as min_or_max
from
(select s.*,
rank() over (partition by name order by amount) min_rank,
rank() over (partition by name order by amount desc) max_rank
from sales s) v
where 1 in (min_rank, max_rank)
このPostgreSQLのですか? –
いいえ、それはFoxbaseです。私はクエリを持っています:セレクトz1からコードを選択してください。セールスz3からのamount =(セールスz2のz2.name = z3.name)からのselect max)それは 'エラー相関フィールド'メッセージを表示しています – BKl
@BKl:待って、Foxbase、'80年代のXベースのクローン?または、他の何か?あなたは明確にしてもらえますか? – Charles