[]

sql ile bir gruplama sorusu

Selamlar,

Şimdi şehirlere göre, hangi gün, ne kadar toplam satış yapılmış şu sorgu ile getiriyoruz.

SELECT CITY, DAYOFWEEK_, SUM(LINETOTAL) AS TOTAL
FROM SALEORDERS
GROUP BY CITY, DAYOFWEEK_
ORDER BY 1

CITY DAYOFWEEK_ TOTAL
ADANA Cuma 173147.1293
ADANA Pazartesi 207692.6600
ADANA Çarşamba 213926.5284
ADANA Salı 191857.1025
ADANA Pazar 197343.1184
ADANA Perşembe 224699.9108
ADANA Cumartesi 199707.0810
ADIYAMANPazartesi 36477.0950
ADIYAMANCumartesi 37508.1629
ADIYAMANPazar 45354.8697

gibi bir çıktısı oluyor. Buradan "en yüksek" satış gerçekleşen satır bilgilerini çekmek istiyorum il bazında.

ADANA Perşembe 224699.9108
ADIYAMANPazar 45354.8697

gibi.

Bir üst selecte çıkarak yapıyorum ama yanına gününü de yazdıramıyorum.
Nasıl yaparım :)

 
Hiçbir şekilde aşağıdaki kodu garanti etmiyorum, Chat GPT verdi :)

SELECT s1.CITY, s1.DAYOFWEEK_, s1.TOTAL
FROM (
SELECT CITY, DAYOFWEEK_, SUM(LINETOTAL) AS TOTAL
FROM SALEORDERS
GROUP BY CITY, DAYOFWEEK_
) AS s1
JOIN (
SELECT CITY, MAX(TOTAL) AS MAX_TOTAL
FROM (
SELECT CITY, DAYOFWEEK_, SUM(LINETOTAL) AS TOTAL
FROM SALEORDERS
GROUP BY CITY, DAYOFWEEK_
) AS s2
GROUP BY CITY
) AS s3
ON s1.CITY = s3.CITY AND s1.TOTAL = s3.MAX_TOTAL
  • quaker  (15.06.23 13:47:16) 
Senin bu grupladığın tablonun yanında ekstra olarak, day_sales_in_city diye bir sütun olsaydı çok iyi olurdu, değil mi?

Böylece grupladığın tabloda, her bir şehir için 1,2,3,4,... yazacaktı. Ve sen sadece 1 olanları istiyorsun.

with table1 as (
SELECT CITY, DAYOFWEEK_, SUM(LINETOTAL) AS TOTAL
FROM SALEORDERS
GROUP BY CITY, DAYOFWEEK_
),
table2 as (
select *, row_number() over (partition by CITY order by TOTAL desc) as day_sales_in_city
from your_grouped_table
)
select *
from table2
where day_sales_in_city = 1
order by 1
  • kanepeee  (15.06.23 21:26:33) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.