Jump to content

Cahide

Members
  • Gesamte Inhalte

    10
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Cahide

  1. Ah, ok das klingt natürlich viel logischer und sieht auch schöner aus.

    Nachdem ich im internet wie b***d gesucht hatte, bin ich zu diesem Ergebnis gekommen und weil die Abfrage die richtige Lösung "ausgespuckt" hatte, wollte ich mich nicht mehr weiter um die Aufgabe kümmern  :D

     

     Jetzt bin ich aber an einer Aufgabe dran, wo ich Subqueries ohne Join benutzen soll..  :confused:  :confused:  :confused:

    Aufgabe:

    Determine name and years served of the President, who obtained the greatest number of votes ever.

     

    TABALLE president:

    id

    name

    birth_year

    years_served

    death_age

    party

    state_id_born

     

    TABELLE election:

    election_year

    candidate

    votes

    winner_loser_indic

     

    Meine Lösungsansatz:

     

    SELECT p.name, p.years_served

    FROM president p
    WHERE p.name IN
    (SELECT candidate 
    FROM election 
    GROUP BY candidate, votes 
    HAVING votes = max(votes));
     
    Die Stelle wo ich hängen bleibe ist, dass mit dem "ROW WITH MAX VOTES" ich weiss nicht, wie ich die Bedingung einbinden soll. habe mehreres Angewandt, doch leider ohne Erfolg. Bekomme jedes mal eine Fehlermeldung.
  2. Guten Abend,

    habe Verständnisprobleme bei folgender Aufgabenstellung:

     

    Select the number of presidents having marriages in which a child was born on an average of minimal once in 5 years (starting with the year the wedding took place in, up to the year the spouse reached age 45).

     

    Tabelle: president_marriage

     

    spouse_name

    spouse_age

    nr_children

    marriage_year

     

    Ich habe die Aufgabe so verstanden, dass ich den SPOUSE_AGE abfragen soll, bei denen die Kinder beginnend mit der Ehe alle 5 Jahren geboren werden. 

     

    Jetzt weiss ich aber nicht, wie der Syntax für "alle 5 Jahre" lautet. ich hatte mir überlegt, die Spalten MARIAGE_YEAR und NR_CHILDREN zu verknüpfen, aber leider finde ich keinen Ansatz. Bräuchte bitte Hilfe.

     

    Kann ich eigentlich sagen, MARIAGE_YEAR + 5  WHERE NR_CHILDREN >=0; ?


    Mein Ansatz war ja voll daneben, habe schon die Lösung :)

  3. Fragen werden mit Fragezeichen beendet. Hab´s vergessen, wird in Zukunft nicht mehr passieren :) .

    Genau, der SQL Code sollte meine Lösung repräsentieren, habe aber die  Aufgabe schon gelöst:

     

    SELECT COUNT(DISTINCT(state_id_born)) FROM president WHERE birth_year <1900;

    Lösung = COUNT 14 ( sollte laut Lösungen richtig sein).

     

    Mein Problem liegt bei der Syntax von Queries ( habe erst gestern angefangen mit SQL(PostgreSQL) zu arbeiten).

     

    Trotzdem Danke für die Lösung. Allerdings möchte ich bitte keine Lösungen, denn ich will es ja auch verstehen.

    • Like 1
  4. Hallo,

    könnte mir jemand bei der Aufgabenstellung helfen. ich komm nicht auf die richtige Lösung.

     

    Aufgabenstellung:

     How many states brought forth a president born before 1900?

    Meine Lösung:

    SELECT (name(state)) FROM state INNER JOIN president ON birth_year <= 1900;

     

     

    -- Table: state

     
    -- DROP TABLE state;
     
    CREATE TABLE state
    (
      id serial NOT NULL,
      name character varying(15) NOT NULL,
      admin_id integer,
      year_entered integer,
      CONSTRAINT prim_key_state PRIMARY KEY (id),
      CONSTRAINT state_fk1 FOREIGN KEY (admin_id)
          REFERENCES administration (id) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION,
      CONSTRAINT check_year_entered CHECK (year_entered >= 1600 AND year_entered <= 2100)
    )
    WITH (
      OIDS=FALSE
    );
    ALTER TABLE state
      OWNER TO postgres;
    COMMENT ON TABLE state
      IS 'States, added in year and under which president.';
     
     
     
     
    -- Table: president
     
    -- DROP TABLE president;
     
    CREATE TABLE president
    (
      id serial NOT NULL,
      name character varying(20) NOT NULL,
      birth_year integer,
      years_served smallint,
      death_age smallint,
      party character varying(10),
      state_id_born integer,
      CONSTRAINT prim_key_pres PRIMARY KEY (id),
      CONSTRAINT president_fk1 FOREIGN KEY (state_id_born)
          REFERENCES state (id) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION,
      CONSTRAINT check_birth_year CHECK (birth_year >= 1600 AND birth_year <= 2100),
      CONSTRAINT check_death_age CHECK (death_age > 20 OR death_age IS NULL)
    )
    WITH (
      OIDS=FALSE
    );
    ALTER TABLE president
      OWNER TO postgres;
    COMMENT ON TABLE president
      IS 'President name, birth year etc.';
     
    -- Index: ipres
     
    -- DROP INDEX ipres;
     
    CREATE INDEX ipres
      ON president
      USING btree
      (party COLLATE pg_catalog."default");
     
     
    Eine Andere Frage: darf ich hier überhaupt Fragen zum Thema SQL Abfragen stellen oder bin ich im falschem Film?
  5. Danke meine Frage ist schon beantwortet. Habe erst heute mit SQL angefangen und kenne mich noch nicht so gut aus. Das ist das "SQL Feld" für meine Tabelle.

     

     

    -- Table: election

     
    -- DROP TABLE election;
     
    CREATE TABLE election
    (
      election_year integer NOT NULL,
      candidate character varying(20) NOT NULL,
      votes integer,
      winner_loser_indic character(1),
      CONSTRAINT prim_key_elec PRIMARY KEY (election_year, candidate),
      CONSTRAINT check_election_year CHECK (election_year >= 1600 AND election_year <= 2100),
      CONSTRAINT check_votes CHECK (votes > 0),
      CONSTRAINT check_winner_loser_indic CHECK (winner_loser_indic = 'W'::bpchar OR winner_loser_indic = 'L'::bpchar)
    )
    WITH (
     OIDS=FALSE
    );
    ALTER TABLE election
      OWNER TO postgres;
    COMMENT ON TABLE election
      IS 'Election year, vote count (electoral vote, by delegate), won or lost';
     
    Hier ist die Aufgabenstellung:
     Determine the minimum number of votes for a winner of presidential elections in the 19th century.
  6. Hallo 

     

    ich bin neu hier. also falls ich falsch gepostet habe sry.

    Ich hätte eine frage zu SQL Abfrage. Wie sieht die WHERE Methode aus, wenn ich nach den Daten der 20. Jahrhundert abfragen möchte?

     

    WHERE table_name = BETWEEN ‘1901‘ AND ‘1999‘?

×
×
  • Neu erstellen...