? SQL-Abfrage ?

Hallo zusammen !

ich habe eine Tabelle mit folgendem Aufbau.
table_sitzung
id | kdnr | sitzungsnr | zustand
Daten :
1,112,1,A
2,112,1,B
3,112,1,C
4,112,1,D
5,444,2,A
6,444,2,B
7,545,3,A
8,545,3,B
9,545,3,C
10,112,4,A
11,112,4,B
12,112,4,C
Also verschieden Zustände für eine Sitzung.
Beispiel :
Ein User loggt sich ein, und bekommt eine Sitzungsnummer.
Seine Vorgänge werden in zuständen gespeichert.
Loggt sich dieser User später wieder ein bekommt er eine neue Sitzung …

Ich benötige die Kunden, mit den meisten Sitzungen, die aber nicht den Zustand ‚D‘ erreichten.
Jede Sitzung darf nur einmal gezählt werden.

Also :
SELECT kdnr,count(*) as anzahl FROM table_sitzung
WHERE Zustand ‚D‘
group by kdnr
order by anazhl desc
->
liefert mir die Datensätze pro Kunde, wobei der Zustand nicht D war.
Jetzt soll jede sitzungsnr aber nur einmal gezählt werden.
Ich dachte erst an sowas :
SELECT kdnr,count(distinct sitzungsnr) as anzahl FROM table_sitzung
WHERE Zustand ‚D‘
group by kdnr
order by anzahl desc
-> das geht aber nicht bzw. das Ergenbnis stimmt nicht.

Hat jemand von euch ne Idee ?

gruss jogi

Hallo zusammen !

ich habe eine Tabelle mit folgendem Aufbau.
table_sitzung
id | kdnr | sitzungsnr | zustand
Daten :
1,112,1,A
2,112,1,B
3,112,1,C
4,112,1,D
5,444,2,A
6,444,2,B
7,545,3,A
8,545,3,B
9,545,3,C
10,112,4,A
11,112,4,B
12,112,4,C
Also verschieden Zustände für eine Sitzung.
Beispiel :
Ein User loggt sich ein, und bekommt eine Sitzungsnummer.
Seine Vorgänge werden in zuständen gespeichert.
Loggt sich dieser User später wieder ein bekommt er eine neue
Sitzung …

Ich benötige die Kunden, mit den meisten Sitzungen, die aber
nicht den Zustand ‚D‘ erreichten.
Jede Sitzung darf nur einmal gezählt werden.

Also :
SELECT kdnr,count(*) as anzahl FROM table_sitzung

Ersetze table_sitzung durch:
(SELECT DISTINCT kdnr, zustand FROM table_sitzung)

WHERE Zustand ‚D‘
group by kdnr
order by anazhl desc

Gruß

Peter

Mahlzeit,

ich habe eine Tabelle mit folgendem Aufbau.

Erste Bitte: welches RDBMS? Die Antworten können je nach System ganz unterschiedlich ausfallen.

Zweite Bitte: benutze doch den PRE-Tag (http://www.wer-weiss-was.de/cgi-bin/faqs/faqlist.fpl…). Dann sieht das so aus:

table\_sitzung
id | kdnr | sitzungsnr | zustand
1 112 1 A
2 112 1 B
3 112 1 C
4 112 1 D
5 444 2 A
6 444 2 B
7 545 3 A
8 545 3 B
9 545 3 C
10 112 4 A
11 112 4 B
12 112 4 C

Ich benötige die Kunden, mit den meisten Sitzungen, die aber
nicht den Zustand ‚D‘ erreichten.
Jede Sitzung darf nur einmal gezählt werden.

Ähm… Du meinst eine HAVING-Klausel?

Also :
SELECT kdnr,count(*) as anzahl FROM table_sitzung
WHERE Zustand ‚D‘
group by kdnr
order by anazhl desc

SELECT kdnr, 
 count(\*) as Anzahl 
 FROM table\_sitzung
 WHERE Zustand 'D'
 GROUP BY kdnr
HAVING count(\*) = max(count(\*))
 ORDER by anazhl desc;

Gruß

Sancho

Hallo zusammen !

Hi,
wenn man davon ausgeht, dass jede Sitzung auch einen Eintrag mit Status A hat, dann funzt es so:

SELECT TOP 1 count(kdnr) AS anzahl, kdnr
FROM tbl\_sitzung
WHERE sitzungsnr NOT IN (SELECT sitzungsnr FROM tbl\_sitzung WHERE zustand="D")
GROUP BY kdnr, zustand
HAVING zustand="A"
ORDER BY count(kdnr) DESC;

Gruß.Timo

ich habe eine Tabelle mit folgendem Aufbau.
table_sitzung
id | kdnr | sitzungsnr | zustand
Daten :
1,112,1,A
2,112,1,B
3,112,1,C
4,112,1,D
5,444,2,A
6,444,2,B
7,545,3,A
8,545,3,B
9,545,3,C
10,112,4,A
11,112,4,B
12,112,4,C
Also verschieden Zustände für eine Sitzung.
Beispiel :
Ein User loggt sich ein, und bekommt eine Sitzungsnummer.
Seine Vorgänge werden in zuständen gespeichert.
Loggt sich dieser User später wieder ein bekommt er eine neue
Sitzung …

Ich benötige die Kunden, mit den meisten Sitzungen, die aber
nicht den Zustand ‚D‘ erreichten.
Jede Sitzung darf nur einmal gezählt werden.

Also :
SELECT kdnr,count(*) as anzahl FROM table_sitzung
WHERE Zustand ‚D‘
group by kdnr
order by anazhl desc
->
liefert mir die Datensätze pro Kunde, wobei der Zustand nicht
D war.
Jetzt soll jede sitzungsnr aber nur einmal gezählt werden.
Ich dachte erst an sowas :
SELECT kdnr,count(distinct sitzungsnr) as anzahl FROM
table_sitzung
WHERE Zustand ‚D‘
group by kdnr
order by anzahl desc
-> das geht aber nicht bzw. das Ergenbnis stimmt nicht.

Hat jemand von euch ne Idee ?

gruss jogi