Comment la somme des colonnes de deux tables liées

J'ai deux tables. Invoices et invoice_items. J'essaie d'obtenir la somme de total_payment et le total des quantity pour chaque client. J'ai essayé cette requête:

SELECT client_id,
sum(total_amount), sum(it.quantity) as days_hired
FROM  `invoices` `iv`
  join invoice_items it on  it.invoice_id=iv.invoice_id
group by client_id, it.invoice_id

Mais pour client_id 14 ans, je suis total paiement 1908 au lieu de 636. Ressemble à la somme de cette colonne répété pour chaque invoie_item. Toute aide sera appréciée.

invoices

invoice_id    client_id    total_payment
    36        13           530
    38        14           636


invoice_items

invoice_id    user_id      quantity     
36            2            2
38            3            2
38            4            2
38            5            2

Résultat attendu:

13     530       2
14     636       6
0
2019-09-17 09:20:19
source
2 réponses

Je n'ai pas de vos données, nous allons utiliser les données de l'exemple de l' lme4 de la vignette.

library(lme4)
library(lattice)
library(broom)

gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
             data = cbpp, family = binomial)

C'est pour les résidus. 0e broom paquet met dans un tibble, que vous pouvez ensuite exporter vers un fichier csv.

x <- tidy(quantile(residuals(gm1, "pearson", scaled = TRUE)))
x

# A tibble: 5 x 2
  names      x
  <chr>  <dbl>
1 0%%    -2.38 
2 25%%   -0.789
3 50%%   -0.203
4 75%%    0.514
5 100%%   2.88 

Ici aussi, sont quelques-uns des autres bits de ce que vous pourriez trouver utiles, à l'aide de glance de broom.

y <- glance(gm1)
y

# A tibble: 1 x 6
  sigma logLik   AIC   BIC deviance df.residual
  <dbl>  <dbl> <dbl> <dbl>    <dbl>       <int>
1     1  -92.0  194.  204.     73.5          51

Et

z <- tidy(gm1)
z

# A tibble: 5 x 6
  term                estimate std.error statistic  p.value group
  <chr>                  <dbl>     <dbl>     <dbl>    <dbl> <chr>
1 (Intercept)           -1.40      0.231     -6.05  1.47e-9 fixed
2 period2               -0.992     0.303     -3.27  1.07e-3 fixed
3 period3               -1.13      0.323     -3.49  4.74e-4 fixed
4 period4               -1.58      0.422     -3.74  1.82e-4 fixed
5 sd_(Intercept).herd    0.642    NA         NA    NA       herd 
+2
2019-09-17 09:27:40

Je pense que vous voulez retourner à la liste des grades de la fonction, de sorte que vous pouvez changer de return(get_grades) à return grades (sans les parenthèses). Lorsque vous avez return(get_grades) que vous êtes en train de retourner l'adresse que le get_grades de la fonction est stockée dans la mémoire.

Donc, avec cela modifier le code ressemble à ceci:

def get_grades():
    value = float(input('Enter grade:\n'))
    grades = []
    while value > 0:
        grades.append(value)
        value = float(input('Enter grade:\n'))
    return grades

print(get_grades())

Vous pouvez l'exécuter avec les entrées ci-dessous et voir ceux qui sont imprimés sur la console:

Enter grade:
30
Enter grade:
40
Enter grade:
50
Enter grade:
0
[30.0, 40.0, 50.0]
+0
2019-09-17 09:30:05

Voir d'autres questions sur les étiquettes