SQL - SQLite - Python - 高度なSELECT文 - 新たな目でデータを見る - order by 1
Head First SQL ―頭とからだで覚えるSQLの基本、 Lynn Beighley(著)、 佐藤 直生(監訳)、 松永 多苗子(翻訳)、 オライリージャパンの 6章(高度なSELECT文 - 新たな目でデータを見る)、p.263(自分でとと考えてみよう)の解答を求めてみる。
schema7.sql
drop table if exists cookie_sales;
create table cookie_sales(
id integer primary key autoincrement,
first_name text,
sales real,
sale_date date
);
insert into cookie_sales
(first_name, sales, sale_date)
values
('リンゼイ', 32.02, '2007/3/06'),
('パリス', 26.53, '2007/3/06'),
('ブリトニー', 11.25, '2007/3/06'),
('ニコール', 18.96, '2007/3/06'),
('リンゼイ', 9.16, '2007/3/07'),
('パリス', 1.52, '2007/3/07'),
('ブリトニー', 43.21, '2007/3/07'),
('ニコール', 8.05, '2007/3/07'),
('リンゼイ', 17.62, '2007/3/08'),
('パリス', 24.19, '2007/3/08'),
('ブリトニー', 3.40, '2007/3/08'),
('ニコール', 15.21, '2007/3/08'),
('リンゼイ', 0, '2007/3/09'),
('パリス', 31.99, '2007/3/09'),
('ブリトニー', 2.58, '2007/3/09'),
('ニコール', 0, '2007/3/09'),
('リンゼイ', 2.34, '2007/3/10'),
('パリス', 13.44, '2007/3/10'),
('ブリトニー', 8.78, '2007/3/10'),
('ニコール', 26.82, '2007/3/10'),
('リンゼイ', 3.71, '2007/3/11'),
('パリス', 0.56, '2007/3/11'),
('ブリトニー', 34.19, '2007/3/11'),
('ニコール', 7.77, '2007/3/11'),
('リンゼイ', 16.23, '2007/3/12'),
('パリス', 0, '2007/3/12'),
('ブリトニー', 4.50, '2007/3/12'),
('ニコール', 19.22, '2007/3/12');
schema7_0.sql
select first_name, sales from cookie_sales
order by first_name;
コード
sample7.py
#! /usr/bin/env python3
import sqlite3
con = sqlite3.connect('sample.db')
cur = con.cursor()
with open(f'schema7.sql') as f:
cur.executescript(f.read())
con.commit()
with open(f'schema7_0.sql') as f:
cur.execute(f.read())
if (d := cur.description) is not None:
print([t[0] for t in d])
for row in cur.fetchall():
print(row)
cur.close()
con.close()
入出力結果(Terminal, Zsh)
% ./sample7.py
['first_name', 'sales']
('ニコール', 18.96)
('ニコール', 8.05)
('ニコール', 15.21)
('ニコール', 0.0)
('ニコール', 26.82)
('ニコール', 7.77)
('ニコール', 19.22)
('パリス', 26.53)
('パリス', 1.52)
('パリス', 24.19)
('パリス', 31.99)
('パリス', 13.44)
('パリス', 0.56)
('パリス', 0.0)
('ブリトニー', 11.25)
('ブリトニー', 43.21)
('ブリトニー', 3.4)
('ブリトニー', 2.58)
('ブリトニー', 8.78)
('ブリトニー', 34.19)
('ブリトニー', 4.5)
('リンゼイ', 32.02)
('リンゼイ', 9.16)
('リンゼイ', 17.62)
('リンゼイ', 0.0)
('リンゼイ', 2.34)
('リンゼイ', 3.71)
('リンゼイ', 16.23)
%