eine Tabelle wie so Gegeben:Zählen unterschiedliche Werte innerhalb der Gruppe
| JobId | Result |
|-------|--------|
| 1 | true |
| 1 | false |
| 1 | true |
| 1 | |
| 2 | false |
| 2 | false |
| 1 | true |
| 1 | true |
| 1 | true |
Ist es möglich, dass eine SQL-Abfrage eine Ausgabe wie folgt zu generieren?
[{JobId: 1, true: 2, false: 1, undefined: 1},
{JobId: 2, true: 3, false: 2, undefined: 0}]
ich derzeit die ORM Sequelize verwende, aber rohe Abfragen verwenden können, ist das, was ich bis jetzt haben.
db.JobResponse.findAll({
where: {
jobId: job
},
attributes: ['JobId', [fn('sum', col('result'))]],
group: ['JobId']
}).then(result => {
res.status(200).send({
data: result
});
})
Derzeit ist es zu sum
die result
Spalt, die Gruppierung von JobId
versucht, jedoch ist das Ergebnis ein boolean (Erwartungswert ist wahr, falsch und nicht definiert), so dass eine einfache Summe wird nicht funktionieren. Ist es möglich, pro eindeutigen Wert innerhalb einer Gruppe zu zählen?
hmmm, das scheint so zu funktionieren, dass, wenn ich kein "wahres" Ergebnis habe, die Abfrage 0 zurückgibt und wenn ich 1 'true' Ergebnis habe, zählt die Abfrage 1. Wenn I Habe 2 'true' Ergebnisse, die Abfrage gibt immernoch nur 1 zurück ... Ich bekomme eine Antwort wie' {data: [{JobId: 1, true: 1, false: 0, undefined: 1}]} ' –
Ich weiß nicht Ich sehe kein Problem mit meiner Anfrage. Vielleicht stimmt etwas nicht mit Ihren Daten. –
Ich glaube nicht. Ich bin Unit-Test einen API-Endpunkt, die Tests verwenden SQLite (also verwende ich nicht die endgültige JSON-Zeile). Wie gesagt, es werden 0 und 1 korrekt, aber wenn ich das 'true' Ergebnis in meinen SQLite JSON Seed kopiere und einfüge, bekomme ich nur eine Anzahl von 1? –